兩個棧實現佇列和兩個佇列實現棧

2021-10-24 08:44:59 字數 1652 閱讀 7424

兩個佇列新增元素,哪個隊列為空,由於在輸出元素時,要進行相應元素的移動(除去尾部元素),所以要在對應不為空的佇列進行元素的新增;在輸出資料時,要進行兩個佇列的變相操作,不為空的佇列要依次向為空的佇列中新增元素,直到尾元素輸出即可!

* 兩個佇列實現乙個棧

* */

public

class

twoqueueimplstack

//如果queue1為空,queue2有資料,直接放入queue2

if(queue1.

isempty()

)//如果queue2為空,queue1有資料,直接放入queue1中

if(queue2.

isempty()

)}/* * 從棧中彈出乙個資料

*/public integer pop()

catch

(exception e)

}//如果queue1中沒有元素,queue2中有元素,將其queue2中的元素依次放入queue1中,直到最後乙個元素,彈出即可

if(queue1.

isempty()

)return queue2.

poll()

;}//如果queue2中沒有元素,queue1中有元素,將其queue1中的元素依次放入queue2中,直到最後乙個元素,彈出即可

if(queue2.

isempty()

)return queue1.

poll()

;}return

(integer)null;

}public

static

void

main

(string[

] args)

}(二)兩個棧實現乙個佇列:

第乙個棧只負責新增元素,第二個棧在彈出元素時,首先判斷當前棧是否為空,若為空就直接將其第乙個棧中的資料全部壓入第二個棧中,然後輸出棧頂元素,即可實現佇列效果;若第二個棧中有資料,新增直接將其資料壓入第乙個棧中,輸出時直接輸出第二個棧頂的元素即可!

* 兩個棧實現乙個佇列

* */

public

class

twostackimplqueue

/* * 佇列的資料彈出過程

*/public integer pop()

}if(stack2.

isempty()

)catch

(exception e)

} integer head = stack2.

pop();

return head;

}public

static

void

main

(string[

] args)

}

兩個佇列實現棧和兩個棧實現佇列

棧 先進後出 佇列 先進先出 1 兩個佇列實現棧 佇列a 佇列b 入棧 入佇列a,1,2,3,4 入棧,在佇列a裡為 a 1,2,3,4 出棧,將佇列a中的元素入佇列b直到佇列a裡的元素只剩下乙個,則隊a為4,隊b為1,2,3,a 4,b 1,2,3,輸出a隊頭4 include include u...

兩個佇列實現棧和兩個棧實現佇列

棧 先進後出 佇列 先進先出 1 兩個佇列實現棧 佇列a佇列b 入棧 入佇列a,1,2,3,4 入棧,在佇列a裡為 a 1,2,3,4 出棧,將佇列a中的元素入佇列b直到佇列a裡的元素只剩下乙個,則隊a為4,隊b為1,2,3,a 4,b 1,2,3,輸出a隊頭4 include include us...

兩個棧實現佇列 兩個佇列實現棧

1.兩個棧實現佇列 大致思路 入佇列時,將元素入棧s1,出佇列時,將s2中的元素出棧即可,如果s2為空,那麼將s1中 s1.size 1 個元素出棧,加入到s2中,然後將s1中最後乙個元素出棧,即完成了出佇列的操作 include using namespace std include includ...