K:栈和队列的比较

栈和队列的相同点:

  1. 都是线性结构,即数据元素之间具有“一对一”的逻辑关系
  2. 都可以在顺序存储结构和链式存储结构上进行实现
  3. 在时间代价上,插入和删除操作都需常数时间;在空间代价上,情况相同
  4. 多链栈和多链队列的管理模式可以相同

栈和队列的不同点:

  1. 删除数据元素操作的位置不同。对于栈而言,其在一端插入数据元素,同时在该端删除数据元素,对于队列而言,其在一端插入数据元素,在另一端删除数据元素。
  2. 两者的应用场景不同。具有后进先出(或先进后出)特性的应用需求,可以使用栈来进行管理。对于具有先进先出(或后进后出)特性的应用需求,可以使用队列进行管理
  3. 顺序栈可以实现多栈空间共享,而顺序队列则不同。在实际应用中,经常会出现在一个程序中需要同时使用两个栈或队列的情况。若采用顺序存储,就可以使用一个足够大的数组空间来存储多个栈,即让多个栈共享同一存储空间。如图:
    多栈空间共享
    其为两个栈共享空间的示意图。其中,把数组的两端设置为两栈各自的栈底,两栈的栈顶从两端开始向中间延伸,可以充分利用顺序栈单向延伸的特性,使两个栈的空间形成互补,从而提高存储空间的利用率。然而,对于顺序队列,就不能像顺序栈那样在同一个数组中存储两个队列,除非总有数据元素从一个队列转入另一个队列。

回到目录|·(工)·)

posted @ 2018-01-05 17:05  林学徒  阅读(...)  评论(...编辑  收藏