1.定义栈:
stack <char> s;
2.栈的基本函数:
- push( ) 将元素压入栈顶;
- top( ) 获得的栈顶元素;
- pop( ) 移除栈顶元素,若想访问栈下的元素,必须先移除栈顶;
- empty( ) 用来检测栈是否为空,若是空,返回的是true,否则false;
3.栈的基本操作:
1)InitStack(&S):初始化空栈S;
2)StackEmpty(S):判断一个栈是否为空;
3)Push(&S,x):进栈,若栈未满,则将x加入使之成为新栈顶;
4)Pop(&S,&x):出栈,若栈非空,则将栈顶元素,并用x返回;
5)GetTop(S,&x):读栈顶元素,若栈顶元素非空,则用x返回栈顶元素;
6)DestroyStack(&S):销毁栈,并释放栈S占用的存储空间;
4.栈的顺序存储结构:
采用顺序存储的栈称为顺序栈,它是利用一组地址连续的存储单元存放自栈底到栈顶的数据元素,同时附设一个指针(top)指示当前栈顶的位置。
栈的顺序存储类型可以用以下表示:
#define MAXSIZE 100 //栈中元素的最大个数
typedef struct {
ElemType data[MAXSIZE]; //存放栈中元素
int top; //栈顶指针
} SqStack;
栈顶指针:S.top,初始时设置S.top = -1;栈顶元素:S.data[S.top];
进栈操作:栈不满时,栈指针加1,再送值到栈顶元素;
出栈操作:栈非空时,先去栈顶元素值,再将栈顶指针减1;
栈空条件:S.top == -1;
栈满条件:S.top == MAXSIZE - 1;
栈长:S.top + 1;