7 用兩個棧來實現佇列 JAVA

2021-08-29 22:38:36 字數 952 閱讀 2776

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。 佇列中的元素為int型別。

解題思路:入隊的時候先把所有的資料都壓棧在stack1中,呼叫出隊的方法時,迴圈出棧把stack1中的資料依次壓棧到stack2中,此時的stack2的棧頂就是要出隊的資料,用t來儲存等下返回,最後再把stack2的資料又壓回stack1即可。

stack

stack1 =

newstack

(); stack

stack2 =

newstack

();public

void

push

(int node)

public

intpop()

int t = stack2.

pop();

//t要出隊的結果

while

(!stack2.

empty()

)return t;

}

解題思路:和一差不多,主要就是關鍵點那裡的if判斷解決的解法一出隊後還需壓棧回去的問題

stack

stack1 =

newstack

(); stack

stack2 =

newstack

();public

void

push

(int node)

public

intpop()

//關鍵點:這個if判斷解決了之前需要把資料再壓回棧1的問題。

//當棧2空了才需要從棧1出棧資料壓到棧2

if(stack2.

empty()

)}return stack2.

pop();

}

用兩個棧來實現佇列

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。利用兩個棧都是後進先出的特性,可以實現負負得正的效果。即每次入棧都進入stack1,每次出棧先在stack2出棧,若stack2為空,則將stack1的元素全部出棧,按序入棧stack2,然後stack2出棧乙個元素即...

7 用兩個棧實現佇列

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。兩個棧stack1 和stack2 入佇列 直接壓入stack1即可 出佇列 如果stack2不為空,把stack2中的棧頂元素直接彈出 否則,把stack1的所有元素全部彈出壓入stack2中,再彈出stack2的棧頂元素 include i...

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

劍指offer 面試題7 用兩個棧實現佇列。templateclass cqueue 我們試著用兩個棧來模擬佇列的操作,發現如下可行操作 完整 實現 面試題7 用兩個棧實現佇列 分別完成在隊尾插入結點和在隊頭刪除結點的功能。date 2014 06 27 include include includ...