Leetcode-Implement Stack using Queues(C++)
2015-07-18 20:19
706 查看
Implement the following operations of a stack using queues.
push(x) – Push element x onto stack.
pop() – Removes the element on top of the stack.
top() – Get the top element.
empty() – Return whether the stack is empty.
Notes:
You must use only standard operations of a queue – which means only push to back, peek/pop from front, size, and is empty operations are valid.
Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue.
You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).
题意:利用queue来设计一个stack,实现push,top,pop与empty
解题思路:关键在于保持新插入的数永远在queue的最前面。这样top以及pop的时候可以轻松操作。
建立两个queue,始终保持一个为空。
push:将插入值push入空的queue1,然后将另一个非空queue2中的数值依次弹出放入queue1.
push(x) – Push element x onto stack.
pop() – Removes the element on top of the stack.
top() – Get the top element.
empty() – Return whether the stack is empty.
Notes:
You must use only standard operations of a queue – which means only push to back, peek/pop from front, size, and is empty operations are valid.
Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue.
You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).
题意:利用queue来设计一个stack,实现push,top,pop与empty
解题思路:关键在于保持新插入的数永远在queue的最前面。这样top以及pop的时候可以轻松操作。
建立两个queue,始终保持一个为空。
push:将插入值push入空的queue1,然后将另一个非空queue2中的数值依次弹出放入queue1.
class Stack { public: queue<int> q[2]; int t=1; // Push element x onto stack. void push(int x) { q[1-t].push(x); while(!q[t].empty()) { q[1-t].push(q[t].front()); q[t].pop(); } t=1-t;//利用1-0=1和1-1=0来循环操作queue } // Removes the element on top of the stack. void pop() { if(!q[t].empty()) { q[t].pop(); } } // Get the top element. int top() { if(!q[t].empty()) { return q[t].front(); } } // Return whether the stack is empty. bool empty() { return q[t].empty(); } };
相关文章推荐
- C++ 合并/去除字符串中多余的空格(创建新串)
- Leetcode-Min Stack(C++)
- LeetCode-Implement Trie (Prefix Tree) (C++)
- enum hack用法
- 实现一个函数,把一个字符串中的字符从小写转为大写。
- 栈变量被覆盖的问题在不同编译器中的表现,蛋疼的VC++
- c++ thread 笔记1
- C++学习笔记——面向对象
- C++中修改类的私有属性的方法
- VC++6.0 修改项目工程名称
- c++题目整理
- c++ primer读书笔记-第十五章 面向对象编程
- C++ 虚基类 派生与继承
- 黑马程序员-C语言基础知识-预处理
- 编写程序输出每种内置类型的长度
- C++中的链式操作
- C++中的链式操作
- 一起talk C栗子吧(第二十回:C语言实例--括号匹配)
- java的接口和C++虚类的相同和不同之处
- freopen - C/C++文件输入输出利器