栈(stack):是只允许在一端(表尾)进行插入或删除的线性表
特点:后进先出;
n个元素依次入栈,可以得到的出栈序列满足卡塔南序列,共有
{eg:abc三个元素依次入栈:
第一种情况:cba---->abc进cba出
第二种情况:bca---->a进,b进b出,c进c出,a出
第三种情况:abc--->a进a出,b进b出,c进c出
第四种情况:bac--->ab进,ba出,c进c出
第五种情况:acb--->a进a出,bc进cb出
(这种情况不可能)--->cab
}
基本操作:
InitStack(&S):初始化栈。构造一个空栈S,分配空间。
DestroyStack(&L):销毁栈。销毁并释放栈S所占用的空间。
Push(&S,x):进栈,若栈S未满,则将x加入使之成为新的栈顶。
Pop(&S,&x):出栈,若栈S非空,则弹出栈顶元素,并用x返回。(删除栈顶元素)
(元素进栈出栈,只能在栈顶进行)
GetTop(S,&x):读栈顶元素。若栈顶S非空,着用X返回栈顶元素。(不删除栈顶元素)