用两个栈实现队列

来源:互联网 发布:java map遍历 编辑:程序博客网 时间:2024/06/04 01:04

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型

思路:
①将一行数1,2,3,4,5 入s1栈,然后再将栈s1中的数据入s2栈,得到顺序。
②但如果取栈中某一个元素,然后继续压栈.如:压入1,2,3。然后1出栈,再压入4,5, 然后2出栈。情况如下图。
这里写图片描述
③本题还有一个坑就是要进行异常处理,当两个栈都没有元素,此时如果执行出栈操作,将会抛出异常。

代码如下所示:

class Solution{public:    void push(int node) {        stack1.push(node);    }    int pop() {        int num = 0;        while (!stack1.empty()) {            stack2.push(stack1.top());            stack1.pop();        }        if (stack2.empty()) {            throw;        }        else {            num = stack2.top();            stack2.pop();        }        while (!stack2.empty()) {            stack1.push(stack2.top());            stack2.pop();        }        return num;    }private:    stack<int> stack1;    stack<int> stack2;};
0 0
原创粉丝点击