数据结构
数据结构——栈与队列
队列是一种受限的线性表结构。栈只支持入栈push()与出栈pop()两种操作。而队列与其相似,仅支持入队enqueue()与出队dequeue()操作。
*[队列操作]:入队:从队列尾部加入数据;出队:从队列头部删除数据。
一、栈
栈是限定仅在表尾(栈顶)进行插入和删除操作的线性表。
栈又称为后进先出(Last In First Out) 的线性表。
- 我们把允许插入和删除的一端称为栈顶。
- 另一端称为栈底。
- 不含任何任何数据元素的栈称为空栈。
1.顺序栈与链栈
(1) 顺序栈
可以使用线性表的顺序存储结构(即数组)实现栈,将之称之为顺序栈。
(2)链栈
可以使用单链表结构实现栈,将之称之为链栈。
(3)顺序栈&链栈的异同
-
A:同【时间复杂度】
顺序栈和链栈的时间复杂度均为 -
B:异【空间性能】
a:顺序栈
顺序栈需要事先确定一个固定的长度(数组长度)。
可能存在内存空间浪费问题,但它的优势是存取时定位很方便。
b:链栈
要求每个元素都要配套一个指向下个结点的指针域。
增大了内存开销,但好处是栈的长度无限。
因此,如果栈的使用过程中元素变化不可预料,有时很小,有时很大&