假设我有一个长度为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?
答案 0 :(得分:1)
没有简单的答案,这是循环缓冲区的缺点。根据实施情况,您可以采取各种措施来管理这种情况:
1)阻止呼叫并等待有空间(假设有多线程环境)
2)返回某种错误代码或抛出异常
3)调整缓冲区大小并更新两个指针(与添加/删除相比,这将是一个昂贵的操作)