- 数据结构(C语言实现)
- 陈锐等编著
- 543字
- 2022-05-10 18:02:01
3.1.1 栈的定义
栈(Stack),也称为堆栈,它是一种特殊的线性表,只允许在表的一端进行插入和删除操作。允许在表中地行插入删除操作的一端称为栈顶(Top),另一端称为栈底(Bottom)。栈顶是动态变化的,它由一个称为栈顶指针(top)的变量指示。当表中没有元素时,称为空栈。
栈的插入操作称为入栈或进栈,删除操作称为出栈或退栈。
在栈S=(a1,a2,…,an)中,a1称为栈底元素,an称为栈顶元素。栈中的元素按照a1,a2,…,an的顺序依次进栈,当前的栈顶元素为an。最先进栈的元素一定在栈底,最后进栈的元素一定在栈顶。每次删除的元素是栈顶元素,也就是最后进栈的元素。因此,栈是一种后进先出的线性表。如图3.1所示。
在图3.1中,a1是栈底元素,an是栈顶元素,由栈顶指针top指示。最先出栈的元素是an,最后出栈的元素是a1。
可以把栈想象成一个木桶,先放进去的东西在下面,后放进去的东西在上面,最先取出来的是最后放进去的,最后取出来的是最先放进去的。
图3.1 栈的示意图
图3.2演示了元素A、B、C、D和E依次进栈和出栈的过程。
图3.2 元素A、B、C、D、E进栈和出栈的过程
如果一个进栈的序列由A、B、C组成,它的出栈序列由ABC、ACB、BAC、BCA和CBA五种可能,只有CAB是不可能的输出序列。因为A、B、C进栈后,C出栈,接着就是B要出栈,A不可能在B之前出栈,所以CAB是不可能出现的序列。