題目:用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素爲int類型。
分析:確定stack1爲入棧,stack2爲出棧(即入數據永遠都往stack1中入,出數據永遠都從stack2中出,但是當stack2爲空時,出數據得從stack1中倒數據),因爲將棧中的元素倒一遍就將數據倒序了,就可以達到隊列的效果。
void push(int node) {
//指定stack1爲入棧,stack2爲出棧
stack1.push(node);
}
int pop() {
int top=0;
if(stack2.empty())//出棧棧爲空,需要倒數據
{
while(!stack1.empty())
{
stack2.push(stack1.top());
stack1.pop();
}
}
//出棧不空,或者倒過來了,直接出
top=stack2.top();
stack2.pop();
return top;
}
private:
stack<int> stack1;
stack<int> stack2;