1. 程式人生 > >C++:用兩個棧來實現一個佇列,完成佇列的Push和Pop操作

C++:用兩個棧來實現一個佇列,完成佇列的Push和Pop操作

problem

用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。 佇列中的元素為int型別。

analysis

class Solution
{
public:
    void push(int node) {
        stack1.push(node);
    }

    int pop() {
        if(stack2.empty()){
            while(stack1.empty()==false){
               int node=stack1.top(); 
               stack2.push(node);
               stack1.pop();
            }
        }
        
        int node=stack2.top();
        stack2.pop();
        return node;
         
    }

private:
    stack<int> stack1;
    stack<int> stack2;
};

其中棧是後進先出,佇列是先進先出,在push操作的時候,我們先把資料壓到一個棧裡,pop操作的時候,我們需要改變一下前一個棧的順序,做法很簡單,把第一個棧裡的資料壓到第二個棧裡就把順序調回來了,這裡注意程式設計的幾個判斷空的條件。

參考文獻

[1].用兩個棧來實現一個佇列,完成佇列的Push和Pop操作。佇列中的元素為int型別.

http://blog.csdn.net/lz_94/article/details/50838343