首页 > 学院 > 开发设计 > 正文

用两个栈实现队列

2019-11-08 20:00:20
字体:
来源:转载
供稿:网友

用两个栈来实现一个队列,完成队列的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;};
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表