用兩個棧來實現乙個佇列,完成佇列的push和pop操作。 佇列中的元素為int型別。
開始思路有個誤區,覺得壓入時所有元素必須在stack1裡面,彈出時所有元素必須在stack2裡面。其實彈出時只要stack2非空,直接從stack2彈出就好了,棧頂就是最先進入佇列的元素,為空,再把stack1所有元素乙個個彈出並壓入stack2。壓入的話直接push進stack1就行了。
調錯總結:#includeusing namespace std;
class solution
int pop()
else if(!stack1.empty())
temp = stack2.top();
stack2.pop();
}//else
// throw new exception("quene is empty");
return temp;
}private:
stackstack1;
stackstack2;
};
(1)開始沒有看到pop()返回值是int,以為是void,沒有return pop出來的元素,報下面這個錯誤:
error: control reaches end of non-void function [-werror,-wreturn-type]
就是該有返回值的地方沒有取得返回值的意思。
(2)當stack1和stack2都為空的時候,pop操作可以丟擲乙個異常,但是加上書上相應**之後報錯:
error: no matching constructor for initialization of 'std::exception'
不知道怎麼解決。
劍指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...