栈(Stack)
栈的基本概念
- 栈:只允许在一端进行插入或删除的线性表
- 后进先出(Last in First out,LIFO)
- 栈的结构:
- 栈顶(Top):允许进行插入和删除的一端
- 栈底(Bottom):固定的,不允许进行插入和删除的一端
- 因为栈本质上也是线性表,所以有顺序储存和链式储存两种储存方式
顺序栈的定义与基本操作
顺序栈的定义
typedef int ElemType;
#define MaxSize 10
typedef struct{
ElemType data[MaxSize];
int top;
}SeqStack;
初始化顺序栈以及栈的判空
void InitStack(SeqStack *S){
S->top = -1;
}
bool StackEmpty(SeqStack *S){
if (S->top == -1) {
return true;
}
return false;
}
入栈操作
bool Push(SeqStack *S, ElemType e){
if (S->top == MaxSize-1) {
return false;
}
S->data[++S->top] = e;
return true;
}
出栈操作
bool Pop(SeqStack *S,ElemType *e){
if (S->top == -1) {
return false;
}
*e = S->data[S->top--];
return true;
}
读取栈顶元素
bool GetTop(SeqStack *S,ElemType *e){
if (S