0
点赞
收藏
分享

微信扫一扫

使用两个栈设计队列

做个橙梦 2022-02-01 阅读 47

题目类型:用栈实现队列

class MyQueue {
private:
    stack<int> que_stack;
    stack<int> com_stack;
public:

    void push(int x) {
        //que_stack为空的话,将com_stack中的元素入栈道que_stack中
        if (que_stack.empty() && !com_stack.empty())
        {
            while (!com_stack.empty())
            {
                que_stack.push(com_stack.top());
                com_stack.pop();
            }
        }
        com_stack.push(x);
    }

    int pop() {
        if (que_stack.empty() && !com_stack.empty())
        {
            while (!com_stack.empty())
            {
                que_stack.push(com_stack.top());
                com_stack.pop();
            }
        }
        if (que_stack.empty() && com_stack.empty())
            exit(0);
        //正常情况
        int top = que_stack.top();
        que_stack.pop();
        return top;
    }

    int peek() {
        if (que_stack.empty() && !com_stack.empty())
        {
            while (!com_stack.empty())
            {
                que_stack.push(com_stack.top());
                com_stack.pop();
            }
        }
        if (que_stack.empty() && com_stack.empty())
            exit(0);
        return que_stack.top();
    }

    bool empty() {
        return com_stack.empty() && que_stack.empty();
    }
};

举报

相关推荐

0 条评论