劍指Offer 用兩個棧實現佇列

2022-01-12 15:45:37 字數 925 閱讀 4352

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

問題描述:解題思路:

通過兩個棧實現乙個佇列,乙個存放最終實現佇列的資料棧,乙個存放臨時棧;

當資料棧中有資料,需要插入乙個元素時,先將資料棧全部存放到臨時棧,再將資料棧全部彈出,然後插入的資料新增到臨時棧;

這時資料棧空,再將臨時棧中所以元素存放到資料棧中,並彈出臨時棧所以元素。

刪除佇列頭部元素,直接彈出資料棧的棧頂元素即可。

注意:

當資料棧為空,即棧實現的佇列無元素,直接入資料棧,無需其他操作;

當資料棧空,刪除元素失敗,返回-1,否則返回刪除的元素。

class

cqueue

void

(int value)

tmp_stack.

push

(value)

;while

(!tmp_stack.

empty()

)}else

return;}

intdeletehead()

i=data_stack.

top();

data_stack.

pop();

return i;

}private

: stack<

int> data_stack;

stack<

int> tmp_stack;};

/** * your cqueue object will be instantiated and called as such:

* cqueue* obj = new cqueue();

* int param_2 = obj->deletehead();

*/

劍指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...