文章目录
article
简单队列
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$判定队空。
- 编写插入函数时,队空时队头和队尾指针指向新节点即可,否则队尾节点指向新节点然后队尾指针指向新节点。
- 编写弹出函数时,下溢判断后将队头指针指向下下个节点。