劍指offer05 雙棧實現佇列

2021-10-18 22:40:01 字數 752 閱讀 3764

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

首先要知道棧和佇列的特性:棧——先進後出;佇列——先進先出

對於push操作,兩者都是將後來的元素放在後面(上面);

對於pop操作,棧只能彈出最後來的元素,佇列只能彈出最先來的元素。

因此,佇列的push操作直接呼叫棧的push即可,而佇列的pop就借助第二個棧將第乙個棧的內容倒換一下,彈出第二個棧的棧頂即可。

class

solution

intpop()

ret=stack2.

top();

//偷懶的小想法——從這個函式的返回型別看在這裡直接返回就行了

stack2.

pop();

while

(!stack2.

empty()

)return ret;

}private

: stack<

int> stack1;

stack<

int> stack2;

};

***偷懶的小想法:***如同在注釋中說的,pop()需要返回乙個int,我就嘗試過經過倒換之後取得stack2的top()就直接返回,不要後面再倒換回stack1了。結果是不行的,推測應該是內部測試還會檢查stack1的內容(即模擬佇列的本體)

stack2工具人實錘!

1.佇列

2.棧

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

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。入隊 棧1入棧,相當於元素入隊 出隊 判斷棧2是否為空,如果為空,把棧1的元素壓入棧2 棧2出棧,相當於元素出隊 class solution 解題思路 入隊 棧1入棧,相當於元素入隊 出隊 判斷棧2是否為空,如果為空...

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

題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。時間限制 c c 1秒,其他語言2秒 空間限制 c c 64m,其他語言128m 解法分析 棧後進先出,佇列先進先出,可用兩個棧spush和spop分別實現push和pop操作,push時node進spush...

劍指offer05 用兩個棧實現佇列

1.佇列 佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。2.棧3.python物件導向程式設計 coding utf 8 class ...