这一章讲的是栈和队列,它们都是特殊的线性表,只不过对插入和删除操作做了限制。

    栈(stack)是限定仅在表尾进行插入和删除操作的线性表。

    队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。

    它们均可以用线性表的顺序存储结构来实现,但都存在着顺序存储的一些弊端。因此它们各自有各自的技巧来解决这个问题。

    对于栈来说,如果是两个相同数据类型的栈,则可以用数组的两端作栈底的方法来让两个栈共享数据,这就可以最大化地利用数组的空间。

    对于队列来说,为了避免数组插入和删除时需要移动数据,于是就引入了循环队列,使得队头和队尾可以在数组中循环变化。解决了移动数据的时间损耗,使得本来插入和删除是O(n)的时间复杂度变成了O(1)。

    它们也都可以通过链式存储结构来实现,实现原则上与线性表基本相同如图4-14-1所示。
    4.14 总结回顾 - 图1