剑指offer--两个栈实现一个队列
来源:互联网 发布:数据库的垂直拆分 编辑:程序博客网 时间:2024/05/14 13:59
两个队列实现一个栈链接:两个队列实现一个栈
栈:先进后出; 队列:先进先出。
思路:
我们可以利用两个栈,s1,s2。首先入队时,在s1入栈。如果想要出队,首先判断栈s2是否为空,如为空,把s1的元素压入s2;即,s1栈底的元素就到了s2的栈顶,就可以pop出去。若不为空,直接s2 pop;若入队,直接入栈s1,当出队时,如果s2不为空就pop s2,如果s2为空,就把s1的元素导入s2。
例如:
#include<iostream>#include<stack>#include<assert.h>using namespace std;template<class T>class Queue{public:void Push(const T& x){s1.push(x);}void Pop(){if (s2.empty()){if (s1.empty())//队列为空{assert(false);}else{//把S1的数据导入s2;while (!s1.empty()){s2.push(s1.top());s1.pop();}}s2.pop();}}protected:stack<T> s1;stack<T> s2;};void Test(){Queue<int> q;q.Push(1);q.Push(2);q.Push(3);q.Push(4);q.Pop();}int main(){Test();system("pause");return 0;}
0 0
- 【剑指offer】两个栈实现一个队列
- 【剑指offer】两个队列实现一个栈
- 两个队列实现一个栈-剑指offer
- 剑指offer-两个栈实现一个队列
- 剑指offer--两个栈实现一个队列
- 【剑指offer】两个栈实现一个队列
- 【剑指offer】两个队列实现一个栈
- 剑指offer--两个栈实现一个队列
- 剑指offer-两个栈实现一个队列
- 【剑指Offer】两个栈实现一个队列
- 剑指Offer--两个栈实现一个队列
- 【剑指offer】用两个栈实现一个队列,用两个队列实现一个栈
- 《剑指Offer》面试题:用两个队列实现一个栈
- 【剑指offer】两个栈实现一个队列 push pop
- 【面试题】剑指Offer-7-两个栈实现一个队列
- 剑指offer系列----用两个栈实现一个队列
- 剑指offer-用两个栈实现一个队列
- 剑指offer 7---使用两个队列实现一个栈
- 算法训练 判定数字
- 解析301与302重定向之间的区别
- IOS
- 离婚的理由(改编)
- javaScript【创建对象、创建类、成员变量、方法、公有和私有、静态】
- 剑指offer--两个栈实现一个队列
- 如何解决VS2013下EF6引用mysql生成实体类时闪退的问题
- 动态规划考试2(test20170401)
- (更新中...)Java EE设计模式 Spring企业级开发最佳实践
- java学习笔记--时间
- 为什么从不同域名获取资源更好
- c++单继承、多继承、菱形继承内存布局(虚函数表结构)
- addEventListener() 和 attachEvent()
- 3D变换:模型,视图,投影与Viewport