7.隊列的定義
8. 順序隊的存儲及基本操作
9. 環形隊列的存儲及基本操作
10. 隊列的鍊式存儲結構及其基本運算的實作
11. 隊列的應用-迷宮問題
12. 雙端隊列
【項目1 - 建立順序環形隊列算法庫】
定義順序環形隊列存儲結構,實作其基本運算,并完成測試。
要求:
1、頭檔案sqqueue.h中定義資料結構并聲明用于完成基本運算的函數。對應基本運算的函數包括:
2、在sqqueue.cpp中實作這些函數
3、在main函數中完成測試,包括如下内容:
(1)初始化隊列q (2)依次進隊列元素a,b,c (3)判斷隊列是否為空 (4)出隊一個元素 (5)輸出隊列中元素個數 (6)依次進隊列元素d,e,f (7)輸出隊列中元素個數 (8)将隊列中所有元素删除,并輸出序列 (9)釋放隊列
【項目2 - 建立鍊隊算法庫】
定義鍊隊存儲結構,實作其基本運算,并完成測試。
具體要求參照項目1。
【項目3 - 負數把正數趕出隊列】
設從鍵盤輸入一整數序列a1,a2,…an,試程式設計實作:當ai>0時,ai進隊,當ai<0時,将隊首元素出隊,當ai=0時,表示輸入結束。要求将隊列處理成環形隊列,使用環形隊列算法庫中定義的資料類型及算法,程式中隻包括一個函數(main函數),入隊和出隊等操作直接在main函數中調用即可。當進隊出隊異常(如隊滿)時,要列印出錯資訊。
【項目4 - 隊列數組】
建立10個隊列,分别編号為0-9(處理為隊列數組,編号即下标)。輸入若幹個正整數,以數字0作為結束。設輸入的值為x,其個位數字的大小為i,則将x插入到編号為i的隊列中。最後輸出所有的非空隊列。
要求将隊列處理成鍊式隊列,使用鍊式隊列算法庫中定義的資料類型及算法,程式中隻包括一個函數(main函數),入隊和出隊等操作直接在main函數中調用即可。
設程式運作時輸入:70 59 90 72 67 88 80 64 29 97 18 83 40 13 0
輸出結果如下圖:

提示: 指向單個鍊隊的指針如下定義: <code>liqueue *qu;</code> 本項目中使用的隊列數組,實際上需要将十個鍊隊的指針,順序存儲到一個數組中即可,如下定義: <code>liqueue *qu[10]; //qu是數組,數組中存儲指針,存儲的是指向liqueue類型的指針</code>
【項目5 -排隊看病模拟】
編寫一個程式,反映病人到醫院看病,排隊看醫生的情況。在病人排隊過程中,主要重複兩件事:
(1)病人到達診室,将病曆本交給護士,排到等待隊列中候診。
(2)護士從等待隊列中取出下一位病人的病曆,該病人進入診室就診。
要求模拟病人等待就診這一過程。程式采用菜單方式,其選項及功能說明如下:
(1)排隊——輸入排隊病人的病曆号,加入到病人排隊隊列中。
(2)就診——病人排隊隊列中最前面的病人就診,并将其從隊列中删除。
(3)檢視排隊——從隊首到隊尾列出所有的排隊病人的病曆号。
(4)不再排隊,餘下順序就診——從隊首到隊尾列出所有的排隊病人的病曆号,并退出運作。
(5)下班——退出運作,提示未就診的病人明天再來。
運作結果可以如下圖所示:
【項目6 - 停車場模拟】
設停車場是一個可停放n輛汽車的狹長死胡同,南邊封口,汽車隻能從北邊進出(這樣的停車場世間少有)。汽車在停車場内按車輛到達時間的先後順序,最先到達的第一輛車停放在車場的最南端,依次向北排開。若車場内已停滿n輛汽車,則後來的汽車隻能在門外的候車場上等候,一旦有車開走,則排在候車場上的第一輛車即可開入。當停車場内某輛車要離開時,在它之後進入的車輛必須先退出車場為它讓路(假定停車場内設有供車輛進出的便道,所有的司機也必須在車内随時待命),待該輛車開出外,其他車輛再按原次序進入車場。每輛停放在車場的車在它離開停車場時,要按停留的時間長短交納費用。試為停車場編制按上述要求進行管理的模拟程式。
以棧模拟停車場,以隊列模拟車場外的候車場,有車離開時,供車輛進出的便道也應該用棧表示。按照從鍵盤讀入的輸入資料序列進行模拟管理。汽車到達和離開時,每一組輸入資料包括汽車牌照号碼(設為整數)以及到達或離去的時刻(為簡單化,也設為整數,如1,代表停車場開始營業的第1小時)。對每一組輸入資料進行操作後的輸出資訊為:若是車輛到達,則輸出汽車在停車場内或修車場上的停車位置;若是車輛離去,則輸出汽車在停車場内停留的時間和應交納的費用(在候車場上停留的時間不收費)。棧以順序結構實作,隊列以連結清單結構實作。