用兩個棧來實現乙個佇列,完成佇列的push和pop操作。 佇列中的元素為int型別。
此題關鍵在於理解這兩種資料結構的特點:
棧:先進後出。佇列:先進先出。
實現-push:直接入棧1
實現-pop:分幾步執行
1、將棧1元素複製到棧2,實現反轉。
2、棧2的棧頂元素出棧,該元素就是輸入的第乙個元素。
3、將棧2元素複製到棧1,此時棧1元素將仍舊按輸入順序儲存。
class solution
int pop()
int top = stack2.top();
stack2.pop();
while(!stack2.empty())
return top;//}
private:
stackstack1;
stackstack2;
};
劍指offer 5 用兩個棧實現佇列
題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。思路 棧 先進後出,佇列 先進先出 1 2 3 棧 3 2 1 1 2 3 佇列 1 2 3 stack1進棧後為1 2 3 出棧並儲存在stack2中為3 2 1,stack2出棧就和佇列一致了。push,...
劍指offer 5 用兩個棧實現佇列
題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解題思路 需要用棧來模擬佇列的push和pop操作。要知道,棧是先進後出,而佇列是先進先出,所以用棧實現佇列的時候,需要兩個棧,進棧可以直接進棧就ok,但是需要首先將兩個棧合為乙個棧,但是出棧的話,需要將原先...
劍指Offer 5 用兩個棧實現佇列
description用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。注 不考慮邊緣情況,如 在兩個stack都空的時候pop 作為乙個lifo的資料結構,stack中的元素在彈出的時候為反序。而為了實現乙個fifo的queue,我們就需要將反序的元素再push進令...