通用佇列類的實現

2021-08-20 19:03:05 字數 1346 閱讀 1855

嗯。。。。這些題目應該是差不多的吧,感覺這個要比我之前寫的那個鍊錶簡單的多,題目如下:

1.根據資料結構和類模板知識,定義乙個通用佇列(先進先出)類並加以實現,編寫主函式進行測試;

......好吧 相當於沒說

但作為輕度強迫症患者,我當然要寫出來乙個至少實現以下功能的佇列:

1,使用類模板和函式模板,實現可以儲存各種型別的資料;

2,可以自定義大小(在建立物件的時候定義大小);

3,實現迴圈,即迴圈佇列;

然後下面是大概的設計思路:

/*迴圈佇列設計思路:

1.整個類對外封閉:根據佇列本身的定義和作用,我們此處要實現的佇列類不需要向外提供較多的函式,只需要乙個入隊和出隊的函式及乙個用於監控的函式就可以

2.佇列本身有兩種狀態:滿態和空態  

3.當佇列頭部已經訪問到了記憶體的上限,則從0開始繼續進行入隊,對於是否為滿態和空態,用兩個標誌位來記錄,其中,乙個標誌headflag標誌頭指標越過上限的次數,另外乙個

endflag標誌尾指標越過上限的次數,一般來說,有以下兩種情況:

a.headflag-endflag=0:表示入隊和出隊操作處於同一週期,正常訪問

b.headflag-endflag=1:表示入隊比出隊多跑了乙個週期,此時,如果頭部標誌位head等於尾部位end了,則資料溢位

*/下面是**

#includetemplateclass queue;

templatequeue::queue(int size)

templatebool queue::isempty()else

}templatebool queue::isfull()else

}templatevoid queue::insert(const t &item)

template//不多說

int queue::getnum()

template//復位 也沒什麼用

void queue::reset()

int main()

for(int j=1;j<=20;j++){//出隊測試

cout《補充:一般來說,佇列是作為緩衝區使用的,或是讀取速度快的暫存活動使用的,所以難免會有溢位的情況,一般對其的處理就是報錯和覆蓋寫入,前者就是佇列停止工作,後者則會造成資料損失,此處作為測試,對其的處理是報錯。

此外,另外一種暫存結構「棧」要簡單的多,僅需對佇列做一些小小的調整即可實現。

rainforest_yulin

20180615

通用迴圈佇列的實現

通用迴圈佇列,這兒是我的筆記,希望大家可以友好交流!謝謝 有好幾天沒寫了,一直和朋友玩,都沒空看了。今天得空寫了一下佇列的實現,還是和之前一樣,有鍊錶的方式和陣列的方式兩種。先是陣列的形式吧,佇列結構 struct xhqueue 佇列一般實現為迴圈的,即有固定大小的,可以節省空間。這裡仍然像實現棧...

模板類實現佇列

include include using namespace std template class type class queue 提起宣告 方便引入其作為友元函式 template class t class queueitem friend class queue 友元宣告 queue中可以...

C 實現MySQL通用操作類

如有錯誤,歡迎各位提出哈 using system using system.collections using system.collections.generic using system.configuration using system.data using system.linq usi...