gpt4 book ai didi

C++ 检查队列是否已满?

转载 作者:太空宇宙 更新时间:2023-11-04 13:45:50 25 4
gpt4 key购买 nike

void enqueue(int val){ 
if (Queue is full, do this){
//... What should I write here? ...

}else{
if(empty()){
r = f = 0;
}else{
r++;
int arr_length = (sizeof(arr)/sizeof(arr[0])) - 1;
if(r == arr_length)
r = 0;
}
arr[r] = val;
}
}

我的问题:队列中将有 2 个指针。指向队列 REAR 的指针 R。指向队列 FRONT 的指针 F。当从队列中删除一个元素时,队列中的第一个元素将被删除,因此,F = F-1;当向队列中添加新元素时,它将被添加到队列中的最后一个位置,因此 R = R+1。

假设我声明了一个固定大小为 5 的数组。R 和 F 可以在队列(循环数组)中绕行。如何检查队列是否已满?

我想到的检查队列是否已满的方法:

Case 1 - When F is pointing at array first element & R is pointing at array last element = Queue is full.

Case 2: When F - 1 = R. Then Queue is full.

我的逻辑正确吗?如何在编码中实现?

最佳答案

您的 Queue isFull 检查适用于:

Case 1 - When F is pointing at array first element & R is pointing at array last element = Queue is full.

Case 2: When F - 1 = R. Then Queue is full.

满了就不能入队了因此,如果您不能入队(满时),最好返回书本,返回 false,否则返回 true,即如果可以入队。这将帮助调用入队或出队的调用者

或者你可以使用 std::queue 或 std::array

关于C++ 检查队列是否已满?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26035478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com