顺序栈的定义
#define MaxSize 10
typedef struct{
int data[MaxSize];
int top;
} SqStack;
初始化顺序栈,因为此时栈里是空的,所以top为-1,
void InitStack(SqStack *s){
s->top=-1;
}
判断栈是否为空
bool StackEmpty(SqStack *s){
if (s->top==-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;
return true;
}
出栈操作
bool Pop(SqStack *s,int *x){
if (s->top==-1) {//top为-1,栈空
return false;
}
*x=s->data[s->top];
s->top--;
return true;
}
读取栈顶元素
bool GetTop(SqStack s,int *x){
if (s.top==-1) {
return false;
}
*x=s.data[s.top];
return true;
}
链栈
其实就是单链表,只是规定在在头结点处进行插入和删除操作,具体可以看链表那一章