劍指Offer 用兩個棧實現佇列

2021-08-19 13:30:05 字數 837 閱讀 1441

題目描述

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

解題思路

佇列是先進先出,而棧是先進後出,想要做到佇列的效果,可以先將數值壓入stack1,然後一次從stack1中彈出,壓入到stack2中,佇列想要pop取值時,從stack2中pop,則符合先進先出的規則。

class solution

int pop()

int res = stack2.top();

stack2.pop();

while( !stack2.empty() )

return res;

}private:

stackstack1;

stackstack2;

};

以上為第一版本,但每次pop時,都要將數值從stack1匯入stack2,取出棧頂元素後,又從stack2導回stack1,其實是沒有必要的,將數值從stack1匯入stack2後,不需要導回,下次需要pop時,如果stack2不為空,直接從stack2中pop即可,當stack2為空,stack1不為空時,再從stack1匯入stack2。修改後**如下:

class solution

int pop()

else if( !stack1.empty() )

res = stack2.top();

stack2.pop();

}return res;

}private:

stackstack1;

stackstack2;

};

劍指offer 用兩個棧實現佇列

華電北風吹 天津大學認知計算與應用重點實驗室 日期 2015 9 30 題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解析 我的思路是用乙個棧來儲存資料,入隊的話直接在這個棧上入棧,出隊的話借助輔助棧,對輔助棧入棧,然後取出頭元素,然後把輔助棧上的元素在...

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

題目描述 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解題思路 將元素入隊時壓入乙個棧中,隨後通過另乙個棧出隊 1 使用stack容器定義兩個棧 stack stack1 stack stack2 2 入隊 stack1.push node node為入隊元素 ...

劍指offer 用兩個棧實現佇列

記錄 劍指offer 上的演算法題。題目描述如下 佇列的宣告如下 template class cqueue cqueue t deletehead bool empty private stack stack1 stack stack2 實現的 如下 templatet stack1.push n...