wang -- 程式設計日記一:
實現迴圈佇列(類模板方便以後使用)
首先是虛基類,相當於宣告了幾個佇列的基本功能
templatet>
classqueue
;
virtual
bool
enqueue(const
t&x)=
0;
virtual
bool
dequeue(t&x)=
0;
virtual
bool
getfront(t&x)=
0;
virtual
bool
isempty()const
=0;
virtual
bool
isfull()const
=0;
virtual
intgetsize()const
=0;
~queue(){};
};
注:其中的enqueue(constt&
x)=0;
引數x是引用的引數,如果在函式中改變了x的值,其實參也會改變可能會出現錯誤,所以在前面加入const,這樣如果在函式中改變了
x的值,編譯時就會報錯。
類似的在函式後面加入const是為了讓這個函式不改變類的成員函式,如果改變了編譯時就會報錯。迴圈佇列:
迴圈佇列利用element[maxsize]來儲存佇列中的元素,佇列中有兩個變數raer和front,分別表示佇列的隊尾和隊頭所在陣列的下標,maxsize是陣列的最大長度,預設為10.
每加入乙個元素,隊尾rear:(rear+1)%maxsize,每出隊乙個元素隊頭標記front:(front+1)%maxsize.(最好畫個圖以便理解)
當隊列為空rear = front.
當隊列為滿 (rear+1)%maxsize =front 所以迴圈佇列只能儲存maxsize-1個資料.
迴圈佇列:繼承自佇列
templatet>
classseqqueue
:public
queue
bool
enqueue(const
t&x);
bool
dequeue(t&x);
bool
getfront(t&x)const;
bool
isempty()
const
bool
isfull()const
intgetsize()const
protected:
intrear,
front;
t*elements;
intmaxsize;
};
templatet>
seqqueue::seqqueue(int
sz):front(0),
rear(0),
maxsize(sz)
;
templatet>
boolseqqueue
::enqueue(const
t&x)
;
templatet>
boolseqqueue
::getfront(t&x)
const
;
templatet>
boolseqqueue
::dequeue(t&x)
;----------wang
佇列 迴圈佇列(C )
定義 佇列 queue 是只允許在一端進行插入操作,在另一端進行刪除操作的線性表。遵守先進先出的規則。資料儲存方式 順序儲存結構 這種結構事先要基本確定佇列的大小,不支援動態分配儲存空間,所以插入和刪除元素比較省時,但是會造成空間的浪費。為了節省空間,引入了迴圈佇列,本質上也是順序儲存結構。鏈式儲存...
迴圈佇列 順序佇列(C )
佇列 queue 是一種限定訪問位置的線性變。他允許在表的一端插入,在另一端刪除。這個和計算機排程策略中的先來先服務fcfs first come first served 是一樣的。佇列中可以插入的一端為隊尾 rear 允許刪除的一端稱為隊頭 front 佇列也分為兩種,一種是用陣列的儲存表示,一...
C 迴圈佇列實現
乙個迴圈佇列的c語言實現,資料型別queue定義如下,注意在typedef structqueue 中queue為資料型別,而在struct queue 中queue為乙個變數名。front為隊首元素下標,始終指向隊首元素,tail為隊尾元素的下乙個位置的下標。初始狀態為front tail 0 t...