如何使用兩個佇列實現棧

2021-10-06 23:42:53 字數 720 閱讀 7113

實現思路分析:

1)假設使用佇列q1和佇列q2模擬棧s,q1為入佇列,q2為出佇列。

2)認為q1提供入佇列的操作,使用q2提供出佇列的操作。

3)當需要入佇列的時候,直接將資料壓入q1棧中即可。

4)當需要從佇列中取出資料的時候,就需要分情況考慮了。

5)若佇列q1中只有乙個元素,則直接讓q1中元素出棧並輸出。

6)若佇列q1中不止乙個元素,那麼將q1中的元素彈出至q2直到q1中只剩下乙個元素為止,然後彈出q1中的元素並輸出,最後將q2中的元素繼續在彈出到q1中。

**實現:

public

class

twoqueuetostack

public

synchronized e pop()

e e = null;

if(q1.

size()

==1)else

if(q1.

size()

==0)else

e = q1.

poll()

;while

(q2.

size()

==0)}

return e;

}public

synchronized

boolean

isempty()

}

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

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

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

include include include using namespace std 使用兩個棧實現佇列,實現了push,pop,front操作 其中棧s2是輔助棧,push直接在s1中插入 pop從s2中出棧,如果s2是空的,將s1倒進s2,然後再出棧,這樣減少了倒棧次數,比較高效。front就...

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

一 題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。二 1 自己 基本思路 乙個棧用於壓縮,乙個專門用於彈出。因為棧是先進後出,所有的元素入棧再出棧,再入棧就可以將順序調整過來。但是沒有想到優化。class solution int pop int tem...