#include <stdio.h> #define MaxSize 10 typedef struct{ int data[MaxSize]; int top; }Stack; void InitStack(Stack &); //初始化 int StackEmpty(Stack); //判断栈是否为空 bool Push(Stack & , int e); //入栈 int Pop(Stack & , int &); //出栈 int TopData(Stack , int); //读取栈顶数据 int main(void){ Stack s; InitStack(s); switch(StackEmpty(s)){ case 0: printf("栈空.\n"); break; case 1: printf("栈满.\n"); break; case 2: printf("栈不为空且不满.\n"); } Push(s,1); Push(s,2); Push(s,3); Push(s,4); int e = 0; printf("出栈的数据是:%d\n",Pop(s,e)); printf("出栈的数据是:%d\n",Pop(s,e)); printf("栈顶数据为:%d\n",TopData(s,e)); return 0; } //初始化 void InitStack(Stack &s){ s.top = -1; } //判断栈是否为空 int StackEmpty(Stack s){ if(s.top = -1){ return 0; }else if(s.top == MaxSize - 1){ s.top == MaxSize - 1; return 1; }else{ return 2; } } //入栈 bool Push(Stack &s , int e){ if(s.top == MaxSize - 1){ printf("栈满"); return false; } s.data[++s.top] = e; return true; } //出栈 int Pop(Stack &s , int &e){ if(s.top == -1){ printf("栈空"); return 0; } e = s.data[s.top--]; return e; } //读取栈顶数据 int TopData(Stack s , int e){ if(s.top == -1){ printf("栈空"); return 0; } e = s.data[s.top]; return e; }