
8.队列

第一章 自测&关键词回顾

第二章 手撕
第一节 链式存储队列
再封装的思想: Node还是链表中的节点, 只是用front和rear记录了下头和尾(替代了原来Node* phead(无头)的记录)
1 | // 无头单链表+再封装 实现队列 |
1 |
|
1 |
|
第二节 数组存储队列
1 |
|
这里还封装了函数, 真正去用时,连函数都不会封装; 定一个全局变量, 拿来就是用.
1 |
|
第三章 相关应用
第一节 循环队列
解决假溢出的问题(充分利用空间)
- 实现的时候遇到的问题
- 关于size的计算: 一定是 (rear-front+N)%N 因为计算一段的长度一定是”末尾-头”,只是因为这里是循环的, 减为负的情况,+N%N就解决了
- 问题:如果N个空间全部利用的话 (rear-front+N)%N 初始时:rear和front都是0, 结果为0; 添加5个元素后rear绕一圈回来还是0,front不动,从而导致不知道是空还是满
- 解决:牺牲一个空间使得 队空(front==rear) 和 队满((rear+1)%N==front) 状态有明确区分
- 也就是, 如果((rear+1)%N==front)就不能push了==>满了
- 如果front==rear就不能pop了==>空了
- 关于出队和入队: 因为是循环, 所以直接 + 1即可, 又因为越界,所以%N
1 |
|
第四章 上手真题
第五章 比赛怎么用
- Title: 8.队列
- Author: 明廷盛
- Created at : 2025-04-01 08:09:49
- Updated at : 2025-04-02 08:16:00
- Link: https://blog.20040424.xyz/2025/04/01/🏫考研/第一部分 数据结构/8.队列/
- License: All Rights Reserved © 明廷盛