第一點:rear指向的是隊尾的下乙個元素
為了不讓rear此時指向的是front 會留個空 讓rear指向乙個空位
第二點: 因為留了個空位 所以當你要插入k個元素的時候 你就要給這個順尋儲存結構陣列長度設為k+1
第三點 :你在返回隊尾 計算長度等等進行加減運算 的時候都要記得取模
在返回rear的時候我們知道 順序迴圈佇列的隊尾是rear-1 但是因為是迴圈我們不能保證現在的rear是0還是幾 一定要進行取模
class
mycircularqueue
/** insert an element into the circular queue. return true if the operation is successful. */
public
boolean
enqueue
(int value)
queue[rear]
=value;
rear=
(rear+1)
%maxsize;
return
true;}
/** delete an element from the circular queue. return true if the operation is successful. */
public
boolean
dequeue()
front=
(front+1)
%maxsize;
return
true;}
/** get the front item from the queue. */
public
intfront()
return queue[front];}
/** get the last item from the queue. */
public
intrear()
return queue[
(rear-
1+maxsize)
%maxsize];}
/** checks whether the circular queue is empty or not. */
public
boolean
isempty()
/** checks whether the circular queue is full or not. */
public
boolean
isfull()
}/**
* your mycircularqueue object will be instantiated and called as such:
* mycircularqueue obj = new mycircularqueue(k);
* boolean param_1 = obj.enqueue(value);
* boolean param_2 = obj.dequeue();
* int param_3 = obj.front();
* int param_4 = obj.rear();
* boolean param_5 = obj.isempty();
* boolean param_6 = obj.isfull();
*/
佇列 順序儲存結構,迴圈佇列
為什麼小甲魚上節課說佇列的實現上我們更願意用鏈式儲存結構來儲存?我們先按照應有的思路來考慮下如何構造佇列的順序儲存結構,然後發掘都遇到了什麼麻煩。我們假設乙個佇列有n個元素,則順序儲存的佇列需建立乙個大於n的儲存單元,並把佇列的所有元素儲存在陣列的前n個單元,陣列下標為0的一端則是隊頭。no pic...
資料結構 迴圈佇列的順序儲存結構
專案整體源 佇列是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。佇列是一種先進先出 first in first out 的線性表,簡稱fifo。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。線性表有順序儲存和鏈式儲存,棧是線性表,所以也有這兩種儲存方式。同樣,佇列作為一種特殊的線性表...
資料結構 迴圈佇列的順序儲存結構
佇列只允許在隊尾插入,在隊頭刪除 迴圈佇列防止假溢位現象 順序儲存結構用陣列實現 include using namespace std define ok 1 define error 0 define maxsize 6 typedef int elemtype typedef int stat...