回绕靠哪个运算实现(C++)
下标从末尾绕回开头,靠的是【0】。
绕一圈之后下标是多少
运行下面这段程序: #include <iostream> #include <string> #include <vector> using namespace std; int main() {
第五个人写在哪一格
容量 4 的循环队列,出队一次之后又来了第五个人。运行下面这段程序,它算的是「第五个人该写在哪一格」: #include <iostream> #include <string> #include <vecto
写一个会回绕的下一格
补全 nxt:给出当前下标和容量,返回下一格的下标(到末尾要绕回 0)。补全后输出容量 4 时下标 3 的下一格。 (本题用 g++ -std=c++17 -O0 编译。)
循环入队绕回去用空格
补全 enqueue:新元素写在 (head + count) % 容量 那一格。容量 4,先排 4 个人,叫走 1 个,再排进「北辰」。输出北辰被写在了哪一格。 (本题用 g++ -std=c++17 -O0 编译。)
循环出队队头也要会绕
补全 dequeue:取走 head 那一格,然后让 head 往前挪一格(要会绕回 0)。容量 4:排满 4 个 → 全叫走 → 再排 3 个 → 又叫走 2 个。输出最后 head 停在哪一格。 (本题用 g++ -std=c++17
只看头尾下标为何分不清
循环队列里只比较 head 和 tail,分不清满和空,因为【0】。
通常怎么解决这个歧义
第 1 步:空:head、tail 在同一格 第 2 步:放进第 1 个,tail 往后挪 第 3 步:放进第 2 个,tail 往后挪 第 4 步:放进第 3 个,tail 往后挪 第 5 步:放进第 4 个,tail 往后挪 第 6 步
用计数法判满的条件
用「另存一个计数」的做法,满的条件是:计数【0】。
排满四个之后满了没有
运行下面这段程序: #include <iostream> #include <string> #include <vector> using namespace std; struct CQueue