栈与队列

数组与链表是数据存储的基本方法。成员访问中,数组可以随机的访问成员,链表通过遍历可以去找到需要的数据单元。

栈与队列是两种特殊的数据成员管理方式。它们本身的数据存放方式也是数组或者链表。

  • 栈:FILO(先进后出)。只允许在栈顶添加元素和删除元素(出栈和入栈)
  • 队列:FIFO(先进先出)。在队首删除元素,在队尾添加元素(出队和入队)

栈与队列 栈与队列

判断什么时候栈为空

  • 栈底加一个特殊标记
  • 记录栈底的位置

栈的溢出:假设申请了100个空间,入栈101以上的成员就会造成栈的溢出

解决办法:

  1. 加一个计数值,如果达到上限,重新申请空间(连续空间)
  2. 链式的(效率低一些)

更多的时候,使用栈采用的是连续的内存空间