2014-10-22 59 views
0

假設我有一個長度爲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

有沒有簡單的答案,這是一個循環緩衝區的缺點。根據實現方式也有,你可以做些什麼來解決這種情況的各種事情:

1)阻止呼叫並等待那裏是空間(假設一個多線程的環境)

2)返回某種錯誤代碼或拋出異常

3)調整緩衝區大小並更新兩個指針(與添加/刪除操作相比,這將是一項昂貴的操作)