数据结构与算法-队列

队列的定义

  • 队列(Queue)也是一种运算受限的线性表。它只允许在表的一端进行插入,而在另一端进行删除。允许删除的一端称为队头(front),允许插入的一端称为队尾(rear)。
  • 队列的修改是依先进先出的原则进行的。

存储原理

  • 数组实现
    image

用数组实现时,为了入队操作的方便,把队尾位置规定为最后入队元素的下一个位置
用数组实现的队列叫作顺序队列

  • 链表实现
    image

用链表实现的队列叫作链式队列

操作

入队

入队(enqueue)就是把新元素放入队列中,只允许在队尾的位置放入元素,新元素的下一个位置将会成为新的队尾。
image

出队

出队操作(dequeue)就是把元素移出队列,只允许在队头一侧移出元素,出队元素的后一个元素将会成为新的队头。
image

应用

队列的应用:

  • CPU资源的竞争问题。
  • 服务、排队问题。
  • 迷宫求解。

线性表、栈与队列的异同点

  • 相同点 :
    ①逻辑结构相同,都是线性的;都可以用顺序存储或链表存储;栈和队列是两种特殊的线性表,即受限的线性表(只是对插入、删除运算加以限制)。

  • 不同点 :
    ①运算规则不同,线性表为随机存取,而栈是只允许在一端进行插入和删除运算,因而是后进先出表LIFO;队列是只允许在一端进行插入、另一端进行删除运算,因而是先进先出表FIFO。
    ②用途不同,线性表比较通用;堆栈用于函数调用、递归和简化设计等;队列用于离散事件模拟、多道作业处理和简化设计等

posted @ 2021-11-17 15:09  狻猊的主人  阅读(131)  评论(0编辑  收藏  举报