两个队列模拟一个栈
2015-02-09 19:13
381 查看
思路就是两个队列切换来切换去。
个人代码如下:
输出:
个人代码如下:
#include <iostream> #include <queue> using namespace std; class CStack { public: void pop(); int top(); void push(int elem); void Move(queue<int> &des, queue<int> &sour, int begin, int end); CStack(){Loop = 0;} size_t size(); private: int Loop; queue<int> a[2]; }; size_t CStack::size() { return a[Loop].size(); } void CStack::push(int elem) { a[Loop].push(elem); } void CStack::Move(queue<int> &des, queue<int> &sour, int begin, int end) { for(int i = begin; i <= end; ++i) { des.push(sour.front()); sour.pop(); } } int CStack::top() { int Des = (Loop + 1) % 2; Move(a[Des], a[Loop], 0, a[Loop].size()-2); return a[Loop].front(); } void CStack::pop() { a[Loop].pop(); Loop = (Loop + 1) % 2; } int main(int argc, char* argv[]) { CStack st; st.push(1); st.push(2); st.push(3); st.push(4); st.push(5); int size = st.size(); //for(int i = 0; i < st.size(); ++i) //i < st.size() 这种写法是有问题的,想想为什么 for(int i = 0; i < size; ++i) { cout<< st.top(); st.pop(); } return 0;; }
输出:
相关文章推荐
- 两个队列模拟一个堆栈
- 用两个栈模拟一个队列
- 利用两个栈模拟一个队列
- 【经典面试题】两个栈模拟一个队列
- 两个队列模拟一个堆栈
- 【C++面试题】:用两个队列模拟一个栈
- 3.5-两个栈模拟一个队列
- 用两个队列模拟一个栈
- 两个队列模拟一个栈
- 两个队列模拟一个栈
- 【学习点滴-数据结构-栈&队列】 用两个栈模拟一个队列
- 两个队列模拟一个栈
- 用两个栈模拟一个队列的运算
- 用两个队列模拟一个栈
- 两个栈模拟一个队列
- 【100题】两个栈模拟一个队列
- 两个队列模拟一个堆栈
- 用两个栈模拟一个队列
- 剑指offer面试题java实现之题7:用两个栈模拟一个队列的入队和出队操作
- 两个栈模拟一个队列/两个队列模拟一个栈