嗯。。。。這些題目應該是差不多的吧,感覺這個要比我之前寫的那個鍊錶簡單的多,題目如下:
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...