用兩個棧來做,乙個主棧,用來儲存資料;乙個輔助棧,用來當快取(時間複雜度o(n))
push(x),我們直接將x插入主棧中即可;
pop(),此時我們需要彈出最先進入棧的元素,也就是棧底元素。我們可以先將所有元素從主棧中彈出,壓入輔助棧中。則輔助棧的棧頂元素就是我們要彈出的元素,將其彈出即可。然後再將輔助棧中的元素全部彈出,壓入主棧中;
具體**如下:
class
solution
void
copy
(stack<
int>
&a, stack<
int>
&b)}
intpop()
private
: stack<
int> stack1;
stack<
int> stack2;
};
(C )劍指offer 5 用兩個棧實現佇列
用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。資料結構 棧 佇列 棧1元素入棧2,先入先出。參考部落格 在c 標準庫 stl 中,實現了棧和佇列,方便使用,並提供了若干方法。以下作簡要介紹。棧 stack 說明及舉例 使用棧,要先包含標頭檔案 include 定義...
劍指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,但是需要首先將兩個棧合為乙個棧,但是出棧的話,需要將原先...