栈——顺序存储
#include<stdio.h> #define MaxSize 10 //栈的所有操作时间复杂度都是O(1) //定义 typedef struct{ int data[MaxSize]; int top; //栈顶指针,永远指向栈顶元素 }SqStack; //初始化,使栈顶指针指向-1 void InitStack(SqStack &S){ S.top=-1; } //判断栈空 bool StackEmpty(SqStack S){ if(S.top==-1) return true; else return false; } //判断栈满 bool StackFull(SqStack S){ if(S.top==MaxSize-1) return true; else return false; } //入栈,先判断栈满 bool Push(SqStack &S,int x){ if(S.top==MaxSize-1) //判断栈满 return false; S.top++; S.data[S.top]=x; printf("%d入栈成功\n",x); return true; } //出栈,先判断栈空 bool Pop(SqStack &S,int &x){ if(S.top==-1) return false; x=S.data[S.top]; S.top--; printf("%d出栈成功\n",x); return true; } //读取栈顶元素 bool GetTop(SqStack S,int &x){ if(S.top==-1) return false; x=S.data[S.top]; printf("栈顶元素是%d\n",x); return true; } int main(){ SqStack S; //定义 InitStack(S); //初始化 Push(S,1); //入栈 Push(S,2); int x; GetTop(S,x); //读栈顶元素 Pop(S,x); //出栈 GetTop(S,x); }