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

时间:2014-09-25 09:48:10

标签: c++ queue

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指向队列的REAR。指向队列FRONT的指针F.从队列中删除元素时,队列中的第一个元素将被删除,因此,F = F-1;当向队列中添加新元素时,它将被添加到队列中的最后一个位置,因此R = R + 1。

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

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

  

案例1 - 当F指向数组第一个元素& R指着   array last element = Queue已满。

     

案例2:当F-1 = R时,队列已满。

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

1 个答案:

答案 0 :(得分:0)

您的队列是完全检查可以:

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