🤖 AI文章摘要 qwen-turbo-latest
加载中...

简单队列(Queue)

队列是一种线性数据结构,遵循元素先进先出的元素访问原则。

对于队列我们关注以下概念:

  • 队头(front | head):队列中准备出队的一端。
  • 队尾(rear | tail):队列中元素入队的一端。
  • 队长(size):队列中元素的个数。
  • 容量(capacity):队列可容纳的最大元素数量。

对于队列我们关注以下几个操作:

  • enqueue:将元素插入队尾。
  • dequeue:将元素从队头删除。
  • front | head | peek:获取队头元素。
  • rear | tail:获取队尾元素。
  • isEmpty:判断队列是否为空。
  • isFull:判断队列是否已满。

基于数组实现

  • 初始化数组相关变量$data$、$size$(初始0)、$capacity$以及队头指针$front$(初始0)。
  • 编写溢出函数时,$size==0$判定队空,$size==capacity$判定队满。
  • 编写插入函数时,进行上溢判断后计算队尾坐标$rear=(front+size)\%capacity$插入元素,并对size加1。
  • 编写弹出函数时,进行下溢判断后更新队头坐标$front=(front+1)\%capacity$,并对size减少1。

基于链表实现

  • 封装带$data$(初始为空)和$next$(初始为空)变量的节点类型,初始化队头指针$front$(初始为null)和队尾指针$rear$(初始为null)。
  • 编写溢出函数时,$front==rear==null$判定队空。
  • 编写插入函数时,队空时队头和队尾指针指向新节点即可,否则队尾节点指向新节点然后队尾指针指向新节点。
  • 编写弹出函数时,下溢判断后将队头指针指向下下个节点。