C++ 检查队列是否已满

C++ Check if a Queue is FULL?

本文关键字:是否 队列 检查 C++      更新时间:2023-10-16
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 个指针。指向队列后方的指针 R。指向队列前面的指针 F。从队列中删除元素时,队列中的第一个元素将被删除,因此,F = F-1;当将新元素添加到队列中时,它将被添加到队列中的最后一个位置,因此 R = R+1。

假设我声明一个固定的数组大小为 5。R 和 F 可以在队列(圆形数组(中扭曲。如何检查队列是否已满?

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

情况 1 - 当 F 指向数组第一个元素而 R 指向 数组最后一个元素 = 队列已满。

情况 2:当 F - 1 = R 时。然后队列已满。

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

您的队列已满检查适用于:

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