用兩個棧來實現乙個佇列,完成佇列的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 ...