栈的基本概念
栈的定义
栈(Stack)是 只允许在一端进行插入或删除操作 的线性表。首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作。

- 栈顶(Top):线性表允许进行插入和删除操作的那一端。
- 栈底(Bottom):固定的,不允许进行插入和删除操作的另一端。
- 空栈:不含任何元素的空表。
假设某个栈
- 入栈次序:
-> -> -> -> - 出栈次序:
-> -> -> ->
由此可见,栈的操作特性可以明显地概括为后进先出(Last In First Out,LIFO)。
栈的基本操作
InitStack(&S)
:初始化一个空栈 S ,分配内存空间。DestroyStack(&S)
:销毁栈 S ,销毁并释放栈 S 占用的内存空间。Push(&S, x)
:入栈,若栈 S 未满,则将 x 加入使之成为新栈顶。Pop(&S, &x)
:出栈,若栈 S 非空,则弹出栈顶元素,并用 x 返回。GetTop(S, &x)
:读栈顶元素,但不出栈,若栈 S 非空,则用 x 返回栈顶元素。StackEmpty(S)
:判断一个栈是否为空,若栈 S 为空则返回true
,否则返回false
。
在解答算法题时,若题干未做出限制,则也可直接使用这些基本的操作函数。
栈的数学性质:当
假设
,则出栈元素不同排列的个数为
