第五节 2.堆栈

栈的定义:

栈(Stack)又叫堆栈(简称栈),它是在同一端进行插入和删除数据的线性表。
栈是最基础也是最常见的数据结构之一,它的数据结构和操作流程如下图所示:

其中,允许进行插入和删除的一端叫作栈顶(Top),另一端叫作栈底(Bottom),栈底固定,栈顶浮动。
当栈中的元素为零时,该栈叫作空栈。添加数据时一般叫作入栈或进栈(Push),删除数据叫作出栈或退栈(Pop)。栈是后进先出(Last In First Out,LIFO)的线性表。

物理结构&逻辑结构:

当谈到“物理”和“逻辑”一词时,我们可以会想到数据库中的逻辑删除和物理删除。
所谓的物理删除是指通过删除命令真实的将数据从物理结构中删除的过程;而逻辑删除是指通过修改命令将数据更改为“已删除”的状态,并非真实的删除数据。
这里的逻辑结构和物理结构和上面的概念类似,所谓的物理结构是指可以将数据存储在物理空间中,比如数组和链表都属于物理数据结构;而逻辑结构则是用于描述数据间的逻辑关系的,比如本文要讲的栈就属于逻辑结构。
可能有些人看到这里就蒙了,没关系,我这里举一个例子你就明白了。
如果用人来表示物理结构和逻辑结构的话,那么真实存在的有血有肉的人就属于物理结构,而人的思想和信念就属于逻辑结构了。