1. 程式人生 > 其它 >LeetCode(225)用佇列實現棧

LeetCode(225)用佇列實現棧

令佇列一為主佇列,佇列二為輔助佇列

當佇列一空的時候,輸入的元素直接放進來,即隊頭和隊尾都是這個元素

當佇列非空的時候,輸入一個元素:

  先把佇列一的元素都放入佇列二,輸入此元素,再把佇列二倒入佇列一,這樣就實現了新入隊的元素在佇列一的頭,即後進先出

另外,queue<int>q的基本操作是:

q.front();//返回隊頭元素
q.push(3);//插入3至隊尾
q.pop();//刪除隊頭元素
q.size();

附上程式碼:

class MyStack {
public:
    queue<int>q1,q2;
    MyStack() {
        
    }
    
    
void push(int x) { int t; if(q1.size()>0){ while(!q1.empty()){ q2.push(q1.front()); q1.pop(); } q1.push(x); while(!q2.empty()){ q1.push(q2.front()); q2.pop(); } }
else{ q1.push(x); } } int pop() { int t = q1.front(); q1.pop(); return t; } int top() { return q1.front(); } bool empty() { if(q1.size()==0)return true; return false; } }; /** * Your MyStack object will be instantiated and called as such: * MyStack* obj = new MyStack(); * obj->push(x); * int param_2 = obj->pop(); * int param_3 = obj->top(); * bool param_4 = obj->empty();
*/