设计一个抽象数据类型栈的顺序表示和实现的演示程序,基本操作有初始化栈,判断空否,入栈,出栈等功能,用c语言输出程序代码
时间: 2024-03-09 15:49:37 浏览: 65
数据结构栈的实现
好的,以下是一个基于数组实现的栈的顺序表示和实现的演示程序。这个程序包括了初始化栈、判断空否、入栈、出栈等基本操作。
```c
#include <stdio.h>
#include <stdbool.h>
#define MAXSIZE 100 // 栈的最大长度
typedef struct Stack {
int data[MAXSIZE]; // 栈的数据域
int top; // 栈顶指针
} Stack;
// 初始化栈
void initStack(Stack *s) {
s->top = -1;
}
// 判断栈是否为空
bool isEmpty(Stack *s) {
if (s->top == -1) {
return true;
} else {
return false;
}
}
// 判断栈是否已满
bool isFull(Stack *s) {
if (s->top == MAXSIZE - 1) {
return true;
} else {
return false;
}
}
// 入栈操作
bool push(Stack *s, int x) {
if (isFull(s)) {
printf("Stack is full!\n");
return false;
} else {
s->top++;
s->data[s->top] = x;
return true;
}
}
// 出栈操作
bool pop(Stack *s, int *x) {
if (isEmpty(s)) {
printf("Stack is empty!\n");
return false;
} else {
*x = s->data[s->top];
s->top--;
return true;
}
}
// 测试栈的顺序表示和实现的演示程序
int main() {
Stack s;
initStack(&s);
printf("Push 1, 2, 3 to stack...\n");
push(&s, 1);
push(&s, 2);
push(&s, 3);
printf("Stack is empty? %d\n", isEmpty(&s));
int x;
pop(&s, &x);
printf("Pop %d from stack...\n", x);
pop(&s, &x);
printf("Pop %d from stack...\n", x);
printf("Stack is empty? %d\n", isEmpty(&s));
return 0;
}
```
希望这个演示程序能够帮到您!
阅读全文