广州在第几层
补全 level_of:用队列走的时候顺便记下每个节点的层号(总部算第 1 层),返回目标节点的层号。这次问的是广州。 (本题用 g++ -std=c++17 -O0 编译。)
一个够用的循环队列要有啥
手写一个够用的循环队列,至少要有【0】。
循环队列比 erase 强在哪
第 1 步:head=0,count=3 第 2 步:写在 (0+3)%4 = 3:count=4 第 3 步:count 等于容量:满了 第 4 步:叫走一个:head=1,count=3 第 5 步:写在 (1+3)%4 = 0:绕回去
排进四个之后计数是多少
运行下面这段程序: #include <iostream> #include <string> #include <vector> using namespace std; struct CQueue
第一步循环队列的骨架
最终作品第一步:在 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】。