在圆形数组中实现队列

时间:2014-10-22 09:27:20

标签: arrays queue

假设我有一个长度为4的数组,我想将某些字符入队并出列。如果没有足够的“空间”来添加操作的下一个字符,会发生什么?

例如:

(1)按顺序排列字符B,N,R

index 0   index 1    index 2   index 3  --------Here front index = 0 and size = 3
 B           N          R     

(2)出列两个字符

index 0   index 1    index 2   index 3  ------Now the front index = 2 and size = 1
                       R    

(3)按顺序排列字符P,O,A,W

index 0   index 1    index 2   index 3  
 O          A          R         P

所以我的问题是:如果没有剩余空间可以“使用”,为什么会出现字符W?

1 个答案:

答案 0 :(得分:1)

没有简单的答案,这是循环缓冲区的缺点。根据实施情况,您可以采取各种措施来管理这种情况:

1)阻止呼叫并等待有空间(假设有多线程环境)

2)返回某种错误代码或抛出异常

3)调整缓冲区大小并更新两个指针(与添加/删除相比,这将是一个昂贵的操作)