劍指offer 用兩個棧實現乙個佇列

2021-10-04 20:33:47 字數 448 閱讀 3090

用兩個先進後出的結構來實現乙個先進先出的結構 ,相當於負負得正的意思。資料先進入棧1,後進的先出,對於棧2來講就是先進的,要後出,所以兩個棧加起來就實現了後進後出,先進先出。

class

solution

intpop()

int y=stack2.top ();

stack2.pop ();

return y;

}private

: stack<

int> stack1;

stack<

int> stack2;

};

要注意的是,棧1的元素進入棧2時,要先判斷棧2中是否為空,因為每次棧1中的全部元素都要進入棧2,但是pop每次只輸出乙個元素,所以剩下的元素會留在棧2裡。如果棧1直接進入棧2的話,就會破壞佇列的順序。所以如果棧2中有元素,先輸出,再輸入。

劍指offer 用兩個棧實現乙個佇列(C )

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。思路 當stack2中不為空時,在stack2中的棧頂元素是最先進入佇列的元素,可以彈出。若stack2為空時,把stack1中的元素逐個彈出並壓入stack2。由於先進入佇列的元素被壓倒stack1的棧底,經過彈出和...

劍指offer 用兩個棧實現佇列

華電北風吹 天津大學認知計算與應用重點實驗室 日期 2015 9 30 題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解析 我的思路是用乙個棧來儲存資料,入隊的話直接在這個棧上入棧,出隊的話借助輔助棧,對輔助棧入棧,然後取出頭元素,然後把輔助棧上的元素在...

用兩個棧實現佇列《劍指offer

題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解題思路 將元素入隊時壓入乙個棧中,隨後通過另乙個棧出隊 1 使用stack容器定義兩個棧 stack stack1 stack stack2 2 入隊 stack1.push node node為入隊元素 ...