c 迴圈佇列

2021-08-11 04:31:40 字數 2121 閱讀 6584

wang -- 程式設計日記一:

實現迴圈佇列(類模板方便以後使用)

首先是虛基類,相當於宣告了幾個佇列的基本功能

template

t>

class

queue

;

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個資料.

迴圈佇列:繼承自佇列

template

t>

class

seqqueue

: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;

};
template

t>

seqqueue

::seqqueue(int

sz):front(0),

rear(0),

maxsize(sz)

;
template

t>

bool

seqqueue

::enqueue(const

t&x)

;
template

t>

bool

seqqueue

::getfront(t&x)

const

;
template

t>

bool

seqqueue

::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...