刷題筆記5——用兩個棧來實現一個佇列
阿新 • • 發佈:2018-11-07
題目描述
用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。
解析
棧是後進先出,佇列是先進先出,由於題目給定了兩個棧,所以思路大致是這樣
① 在入隊push時,直接將元素放到其中一個棧A中
② 在出隊pop時,將棧A中的元素逐個彈出並放到棧B中
一直到將棧A中的元素全部彈出,即完成了棧A元素向棧B的轉移
然後,將棧B的棧頂元素給result,然後呼叫棧的pop方法將其彈出即可
程式碼
class Solution
{
public:
void push(int node) {
stack1. push(node);
}
int pop() {
int res;
if(stack2.empty()) {
while(!stack1.empty()) {
stack2.push(stack1.top());
stack1.pop();
}
}
res = stack2.top();
stack2.pop();
return res;
}
private:
stack<int> stack1;
stack<int> stack2;
};