兩個佇列實現乙個棧

2022-06-22 03:18:06 字數 799 閱讀 9862

題目描述:

利用兩個佇列實現乙個棧,實現先進後出的功能。

演算法實現:

1 #include2 #include3

using

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...