新建一个栈,读取标准输入3个整数,入栈3个元素,依次出栈,打印
#define _CRT_SECURE_NO_WARNINGS // vs 操作下加入该指令才能打印
#include<stdio.h>
#define MaxSize 100 //创建100
typedef int ElemType; //类型重新定义
typedef struct { //定义一个顺序栈
ElemType data[MaxSize]; //数据域
int top; //指针域
}Sqstack;
void InitSqStack(Sqstack& s) { //先初始化顺序栈,以免脏数据影响其他的操作
s.top = -1;
}
bool Push(Sqstack& s, ElemType x) { //入栈操作
if (s.top == MaxSize - 1) { //确定栈顶指针指向栈底
return false;
}
else {
s.data[++s.top] = x; //使用前++操作,相当于先++再赋值
}
return true;
}
bool Pop(Sqstack& s, ElemType x) { //出栈操作
if (s.top == -1) //空判空操作,如果栈顶指针=-1.=,则说明是空栈,则不能进行输出
return false;
else
x = s.data[s.top--];
return true;
}
bool PrintStack(Sqstack s) { //打印操作
if (s.top != -1)
return false;
else
for (int i = 2; -1 < i; i--) //停止条件,倒序打印
printf(" %d ", s.data[i]);
return true;
}
int main() {
int a, b, c;
scanf("%d", &a);
scanf("%d", &b);
scanf("%d", &c);
Sqstack s;
InitSqStack(s);
Push(s, a);
Push(s, b);
Push(s, c);
Pop(s, a);
Pop(s, b);
Pop(s, c);
PrintStack(s);
}