作者qazplm (BedPotato)
站內C_and_CPP
標題[問題] 用兩個 Queue 來實作一個 Stack
時間Sun Oct 25 19:21:48 2009
//假設: Q[0] 為 Queue(Push/Pop/Total Function)
// Q[1] 為 Queue(Push/Pop/Total Function)
//
//需求: 使用 Q[0], Q[1] 組出一個 S Stack(Push/Pop Function)
//
//---------------------------------------------------------------------
//[開始]
//設定 MainQueue 為 Q[0] (以下把 MainQueue 簡寫為 MQ)
// AuxQueue 為 Q[1] (以下把 AuxQueue 簡寫為 AQ)
int j = 0;
Queue Q[2];
Queue *MQ = Q + j, *AQ = Q + (j + 1)%2;
//[ S Push Function ] - 從 S Push 1 Item
//若 MQ 已滿 -
// S Push Fail
//否則 -
// 步驟1. 做 MQ Push 1 Item
MQ -> Push(/* new item */);
//[ S Pop Function ] - 從 S Pop 1 Item
//若 MQ 為空 -
// S Pop Fail
//否則 -
// 步驟1. 從 MQ Pop (Total Item(s) Of MQ - 1) Item(s) 且依序做 AQ Push
int i;
for( i = 0; i < MQ.Total() - 1; ++i)
AQ -> Push( MQ -> Pop() );
// 步驟2. 做 MQ Pop 1 Item
item tmp = MQ -> Pop();
// 步驟3. 交換設定 MQ 為 AQ 而 AQ 為 MQ
j = (j + 1)%2;
*MQ = Q + j;
*AQ = Q + (j + 1)%2;
(僅供參考)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.224.131
※ 編輯: qazplm 來自: 118.169.224.131 (10/25 19:22)
1F:→ walm20:不知道想表達什麼 10/25 20:48
2F:推 twotwoone:就...要程式碼啊 10/25 20:50
3F:→ walm20:所以是作業文 10/25 20:52
4F:→ nowar100:問題標題,但是看不出問題在哪,請充實內文,之後解鎖 :) 10/25 20:58
補程式碼,改標題為作業
※ 編輯: qazplm 來自: 118.169.224.131 (10/25 23:50)
5F:→ dendrobium:我很好奇為什麼問問題都不用版主弄好的格式...? 10/26 00:15
6F:→ dendrobium:連 [作業] 都出來了,果然是高手... 10/26 00:16
7F:推 VictorTom:小弟有點迷糊了, 這篇也是問題, 還是上面那篇的答案啊@@ 10/26 00:43
8F:→ saxontai:這篇是在回答 #1Av29xSm??? 10/26 02:18