【数据结构】两个队列实现一个栈
2016-05-30 17:19
357 查看
用两个栈实现一个队列,这个问题与“两个队列实现一个栈”原理非常的相似。只要你明白了”两个队列实现一个栈“的原理,相信聪明的你,就会明白这个问题只是它的变种,所有的异或就会迎刃而解的。这里大家可以参考我的博客http://10740184.blog.51cto.com/10730184/1763006
代码如下:
本文出自 “Han Jing's Blog” 博客,请务必保留此出处http://10740184.blog.51cto.com/10730184/1773072
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespace std; //两个队列实现一个栈 #include<queue> template<class T> class Stack { public: void appendTail(const T& x) { q1.push(x); } void deleteTail() { if (q2.empty()) { while (!q1.empty()) { q2.push(q1.front()); q1.pop(); } cout << q2.front() << " "; q2.pop(); } else { cout << q2.front() << " "; q2.pop(); } } private: queue<T> q1; queue<T> q2; }; void Test() { Stack<int> s; s.appendTail(1); s.appendTail(2); s.appendTail(3); s.appendTail(4); s.deleteTail(); s.deleteTail(); s.deleteTail(); s.deleteTail(); } int main() { Test(); system("pause"); return 0; }
本文出自 “Han Jing's Blog” 博客,请务必保留此出处http://10740184.blog.51cto.com/10730184/1773072
相关文章推荐
- 【数据结构】常用比较排序算法(包括:选择排序,堆排序,冒泡排序,选择排序,快速排序,归并排序)
- 【数据结构】大量数据(20万)的快速排序的递归与非递归算法、三数取中思想
- 【数据结构】非比较排序的算法实现(包括计数排序、计数排序)
- 【数据结构】使用栈Stack解决迷宫问题
- 【数据结构】(面试题)使用两个栈实现一个队列(详细介绍)
- 【数据结构】对称矩阵及对称矩阵的压缩存储
- 【数据结构】稀疏结构及稀疏矩阵的压缩存储,矩阵的(快速)转置
- 【数据结构】广义表的默认成员函数、深度、大小、打印
- 【数据结构】二叉树的实现(如:默认成员函数、(叶子)节点数、深度、四种遍历)
- 【数据结构】二叉树(前、中、后)序遍历的递归与非递归算法
- 【数据结构】堆的实现(包括:默认成员函数,插元素push,删元素pop,访问根节点top,判空,大小)
- 【数据结构】优先级队列的实现(适配器模式)
- 【数据结构】找出N个数据中最大的前k个数据(利用堆排序)
- 【数据结构】将一组数据升序排序(利用堆排序)
- 数据结构-链表
- 《Redis设计与实现》[第一部分]数据结构与对象-C源码阅读(二)
- 跳表(Skiplist)
- 数据结构—稀疏矩阵三元组基础及应用
- 数据结构实验之队列一:排队买饭
- 第六章 数据结构