見上題的解答
參見上面題
typedef struct node
{elemtype elemcq[m]; //m為隊列最大可能的容量
int front rear; //front和rear分別為隊頭和隊尾指針
}cqnode;
cqnode cq;
初始狀態
cqfront=cqrear=;
隊列空
cqfront==cqrear;
隊列滿
(cqrear+)%m==cqfront;
棧的特點是後進先出隊列的特點是先進先出初始時設棧s和棧s均為空
()用棧s和s模擬一個隊列的輸入設s和s容量相等分以下三種情況討論若s未滿則元素入s棧若s滿s空則將s全部元素退棧再壓棧入s之後元素入s棧若s滿s不空(已有出隊列元素)則不能入隊
()用棧s和s模擬隊列出隊(刪除)若棧s不空退棧即是隊列的出隊若s為空且s不空則將s棧中全部元素退棧並依次壓入s中s棧頂元素退棧這就是相當於隊列的出隊若棧s為空並且s也為空隊列空不能出隊
()判隊空 若棧s為空並且s也為空才是隊列空
討論s和s容量之和是隊列的最大容量其操作是s棧滿後全部退棧並壓棧入s(設s和s容量相等)再入棧s直至s滿這相當隊列元素入隊完畢出隊時s退棧完畢後s棧中元素依次退棧到ss退棧完畢相當於隊列中全部元素出隊
在棧s不空情況下若要求入隊操作只要s不滿就可壓入s中若s滿和s不空狀態下要求隊列的入隊時按出錯處理
()隊空sfront=srear //設s是sequeuetp類型變量
()隊滿(srear+)MOD MAXSIZE=sfront //數組下標為 MAXSIZE
具體參見本章應用題第題
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/sjjg/201311/22711.html