• 定义
    队列是ListInsert发生表尾、ListDelete发生在表头的线性表,主要操作:入队、出队。数据结构与算法-队列

  • 术语
    表头-队头,表尾-队尾,插入-入队,删除-出队

  • 特点

  1. 先入先出(FIFO)
  2. 插入的位置是length+1,删除的位置的是1,一般读取第1个数据元素

循环队列(Circular Queue)

顺序队列的假溢出问题

数据结构与算法-队列

队列上溢出
  • 真上溢:队列真正满时再入队。
  • 假上溢:rear已指向队尾,但队列前端仍有空位置。
  • 解决假上溢的方法
    方法一:每次删除队头一个元素后,把整个队列往前移一个位置(造成时间浪费)。
    方法二:使用循环队列方法二:使用循环队列

循环队列-基本思想

  • 首位相连:把a[0]和a[5]想象成邻居

数据结构与算法-队列

循环队列-满与空的判定

循环队列空和满,队头和队尾相连,如何区分?
数据结构与算法-队列

解决方法
  1. 另外设置一个标志,以区别队空、队满;
  2. 少用一个元素空间
    队空:front = = rear
    队满:(rear+1)%M = = front

数据结构与算法-队列

优先队列(Priority Queue)

优先队列是正常入,按照优先级出的队列。

实现机制

  • Heap(Binary,Binomial,Fibonacci)
  • Binary Search Tree

小顶堆(Mini Heap)
数据结构与算法-队列
大顶堆(Max Heap)

数据结构与算法-队列

各种堆实现的时间复杂度对比图
数据结构与算法-队列

阻塞队列(Blocking queue)

相关文章: