#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; }