用两个栈实现队列

用两个栈实现队列

class CQueue {
public:
    stack<int>InStack;
    stack<int>OutStack;
    CQueue() {

    }
    
    void appendTail(int value) {
        InStack.push(value);
    }
    
    int deleteHead() {
        if(InStack.empty()) 
                return -1;
        if(OutStack.empty())
        {
            while(!InStack.empty())
            {
                OutStack.push(InStack.top());
                InStack.pop();
            }
        }
        int result=OutStack.top();
        OutStack.pop();
        
        while(!OutStack.empty())
        {
            InStack.push(OutStack.top());
            OutStack.pop();
        }
        return result;
    }
};

/**
 * Your CQueue object will be instantiated and called as such:
 * CQueue* obj = new CQueue();
 * obj->appendTail(value);
 * int param_2 = obj->deleteHead();
 */

用两个栈实现队列

上一篇:你应该选择哪一个Linux桌面环境?


下一篇:232. Implement Queue using Stacks