#include<stdio.h>
#include<stdlib.h>
#define MAXSTACK 100//定义堆栈的最大容量
int stack[MAXSTACK];//堆栈的声名
int top = -1;//堆栈的顶端
int isEmpty() {
if (top == -1) {
return 1;
}
return 0;
}
int push(int data) {
if (top >= MAXSTACK) {
printf("堆栈已满,无法压栈\n");
return 0;
}
else {
stack[++top] = data;//压栈
return 1;
}
}
int pop() {
int pop_num;
if (isEmpty()) {//是否为空,为空则返回-1
return -1;
}
else {
pop_num = stack[top];
stack[top] = -1;
top--;
return pop_num;
}
}
int main() {
int value;
int i;
do {
printf("压栈请按1,弹栈请按0,停止操作请按-1 : ");
scanf_s("%d",&i,4);
if (i == 1) {
printf("请输入数据:");
scanf_s(" %d",&value,4);
push(value);
}
else if(i == 0){
printf("从堆栈弹出数据为%d\n",pop());
}
} while (i != -1);
printf("=================================\n");
while (!isEmpty()) {
printf("从堆栈弹出数据的顺序为%d\n", pop());
}
printf("=================================\n");
return 0;
}