題目描述:
利用兩個佇列實現乙個棧,實現先進後出的功能。
演算法實現:
1 #include2 #include3using
namespace
std;
45 queueq1;
6 queueq2;78
int &data)
12else
if(q1.size() > 0)15
else
if(q2.size() > 0)18
}1920int
getdata()
2526
if(q1.empty() == 1)32
int s =q2.front();
33q2.pop();
34return
s;35}36
37if(q2.empty() == 1)43
int s =q1.front();
44q1.pop();
45return
s;46}47
}4849int
main()
6162
if(str == "
pop")67
else
6871}72
}7374return0;
75 }
演算法思想:
我們知道兩個佇列實現乙個棧,其中佇列的機制是先進先出,棧的機制是先進後出;那麼我們需要駁斥乙個隊列為空,如果pop資料時需要將有資料的佇列的資料存入空的佇列,讓有資料的佇列只剩乙個資料就可彈出。具體可以觀察**更加明確。
兩個棧實現乙個佇列 兩個佇列實現乙個棧
這兩個題的思路比較相似。棧的特點是 先進後出 佇列的特點是 先進先出 不要怕!用兩個棧實現乙個佇列很簡單 再將top元素push到stack 2中,然後將stack 1 pop一次直到stack 1剩下最後乙個元素,這個就是最先push進去的,我們把它pop掉就可以了,同理,我們求queue的fro...
兩個棧實現乙個佇列,兩個佇列實現乙個棧
1 兩個棧實現乙個佇列 入隊時,直接壓入stack1中。出隊時,判斷stack2是否為空,如果stack2為空,則將stack1中的元素倒入stack2中,否則直接彈出stack2中的元素。入隊操作 void enqueue stack s1,stack s2,int m 出隊操作 void deq...
兩個棧實現乙個佇列 兩個佇列實現乙個棧
方法一 public class main 出棧操作 public int deletehead while stack1.isempty return stack2.pop 方法二 public class main public int deletehead throws exception i...