第一步循环队列的骨架

最终作品第一步:在 CQueue 里写出 enqueue / dequeue(两个下标都要会绕)。容量 4,排满 4 个、叫走 1 个、再排进「北辰」,输出北辰落在哪一格。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

第二步满和空都要挡住

给它加上 is_full / is_empty,并让 enqueue 满了返回 队列已满。容量 4 排满之后再排一个,输出这次的结果。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

第三步再写一个双端队列

写一个 Deque,四个方法都要有:push_front / push_back / pop_front / pop_back。右端进三个人,然后从左端取一个,输出取到的是谁。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

第四步拿队列分层遍历

用 std::queue 把这棵组织树一层一层走完,输出一共有几层。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

交付三件套一起验收

这是这条路线的最终作品。把 CQueue(含 is_full / is_empty,dequeue 空时返回 队列为空)和 Deque 都写出来,再用队列做分层遍历,然后一次验完五条:容量 4 排满之后 is_full() 为真;叫走 1

开始练习 →

越界时内存检查会怎样

循环队列的下标越出数组时,Makefile 里的 -fsanitize=address 会【0】。

开始练习 →

修好队尾忘了绕回

场景:实验机上 ~/work/queue/cq.cpp 是一个循环队列:读入容量,再按 push / pop 指令排队叫号。排几轮以后就出错,带着内存检查一跑,报越界。 任务:修好 push 里的下标,让队尾走到末尾能绕回开头。make 编

开始练习 →

修好判满判空

场景:~/work/queue/cq.cpp 是「空一格」的循环队列:cap 个格子最多放 cap-1 个,head 是队头,tail 是下一个要写的格子。可它一开始就说满了。 任务:修好 full(),让空和满各有各的判断条件。make

开始练习 →

修好出队后的队头

场景:~/work/queue/cq.cpp 的循环队列每次叫号,叫到的都是同一个人。 任务:修好 pop,让队头在出队后往前挪(记得会绕回)。make 编译后用 sample.txt 自测。 可操作范围:只在分给你的这台实验机上操作。可以

开始练习 →

补写左端入队

场景:~/work/queue/dq.cpp 是用环形数组做的双端队列,push_back、pop_front、pop_back 都写好了,只差 push_front。 任务:补全 push_front,不越界、不漏内存。make 之后用

开始练习 →