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

2021-08-16 17:13:52 字數 591 閱讀 9720

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

這個是在是最簡單的程式設計問題了,以前沒做過練習,然後去面試的時候,題目讓兩個棧實現佇列,都蒙了,現在感覺就是。。

思路:入佇列的時候非常簡單,就是用乙個棧stack1儲存入隊的元素即可,出佇列的話就和棧不太一樣了,我們知道棧是filo,先進後出,而我們要實現的佇列是先進先出fifo,因此我們需要用另乙個棧stack2將儲存元素的棧裡面的元素都倒出來,然後棧底的那個(隊首)的元素就冒出來到stack2的棧頂了,這時候將它取出來top操作,然後將它出棧pop出去,然後再將stack2的元素再倒回去到stack1中,就完成出佇列並將整個「佇列」恢復原樣了。

**如下:

class solution

int pop()

int ret = stack2.top();

stack2.pop();

while(stack2.size()>0)

return ret;

}private:

stackstack1;

stackstack2;

};

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

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。這道題目在考研資料結構的時候也做過,用兩個棧來實現佇列進隊 出隊的功能是可以實現的。1 棧 stack 是先進後出 filo 的資料結構,佇列 queue 是先進先出 fifo 的資料結構,它們都是操作受限的資料結構。...

兩個佇列實現乙個棧 劍指offer擴充套件

題目描述 使用兩個佇列實現乙個棧。實現push和pop函式。解題思路 利用佇列先進先出的特性,我們可以使用兩個佇列來模擬棧的特性。當我們往棧中push元素時,往非空的那個佇列中push 當我們pop棧中的元素時,將非空的佇列中的元素取出來再push到本來為空的佇列中,直到剩下乙個元素時,將該元素fr...

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

用兩個先進後出的結構來實現乙個先進先出的結構 相當於負負得正的意思。資料先進入棧1,後進的先出,對於棧2來講就是先進的,要後出,所以兩個棧加起來就實現了後進後出,先進先出。class solution intpop int y stack2.top stack2.pop return y priva...