栈
2026/4/9小于 1 分钟
栈
#define MaxSize 10 //定义栈中元素的最大个数
typedef struct{
ElemType data[MaxSize]; //静态数组存放栈中元素
int top; //栈顶指针
}SqStack;
void InitStack(SqStack &S){
S.top=-1;
}看清题目上的Top指的是0还是-1
进栈
bool Push(SqStack &S,ElemType x){
if(S.top==MaxSize-1) //栈满,报错
return false;
S.data[++S.top]=x;
/*
S.top=S.top+1; //指针先加1
S.data[S.top]=x; //新的元素入栈
*/
return true;
}出栈
bool Pop(SqStack &S,ElemType &x){
if(S.top==-1) //栈空,报错
return false;
x=S.data[--S.top];
/*
x= S.data[S.top]; //
S.top=S.top-1; //指针先加1
*/
return true;
}读取栈顶元素
bool GetTop(SqStack S,ElemType &x){
if(S.top==-1) //栈空,报错
return false;
x=S.data[S.top];
return true;
}栈的链式存储
typedef struct Linknode{
ElemType data; //数据域
struct Linknode *next; //指针域
}*LiStack; //栈类型定义入栈:头插法建立单链表
出栈:单链表的删除操作