双队列实现栈
来源:互联网 发布:阿里云计算 北京地址 编辑:程序博客网 时间:2024/04/27 05:30
双队列实现栈的主要思路,是一个队列为主队列,另外一个为辅助队列。
每次从栈中pop出一个数,实质就是每次取队尾元素,假设主队列中有N个元素,那么就将前N-1个元素放入辅助队列当中,此时主队列当中只有队尾元素,将其取出,然后再将辅助队列当中的元素全部再放回主队列当中,一次pop动作完成。
栈的push动作实现,就是将元素push进主元素就可以了
实现代码和测试结果如下:
1 #include <queue> 2 #include <iostream> 3 using namespace std; 4 5 class exQueue 6 { 7 public: 8 exQueue(){}; 9 ~exQueue(){};10 void inQueu( int x);11 void outDeque();12 private:13 queue<int> d1;//主对列14 queue<int> d2;//辅对列15 };16 17 void exQueue::outDeque()18 {19 int temp;20 if(d1.size() == 0 ) return ;21 else22 {23 int size = d1.size();24 for( int i = 0 ; i < size - 1; i++)25 {26 temp = d1.front();27 d1.pop();28 d2.push(temp);29 }30 temp = d1.front();31 d1.pop();32 cout << "The poped number is " << temp <<endl; 33 while( !d2.empty())34 {35 temp = d2.front();36 d2.pop();37 d1.push(temp);38 } 39 }40 }41 void exQueue::inQueu(int x)42 {43 d1.push(x);44 45 }46 int _tmain(int argc, _TCHAR* argv[])47 {48 exQueue obj;49 obj.inQueu(1);50 obj.inQueu(4);51 obj.inQueu(5);52 obj.inQueu(1);53 obj.inQueu(3);54 obj.inQueu(24);55 obj.outDeque();56 obj.outDeque();57 obj.outDeque();58 obj.inQueu(189);59 obj.inQueu(23);60 obj.outDeque();61 obj.outDeque();62 obj.outDeque();63 64 return 0;65 }
- 双队列实现栈
- 双栈实现队列
- 双栈实现 队列
- 如何实现 :双栈实现队列 双队列实现栈
- 用双队列实现栈和用双栈实现队列
- 双端队列实现栈
- 双栈队列实现快速获取队列最大值最小值
- LinkedList实现栈、队列或者双端队列分析
- 队列实现栈和栈实现队列
- 栈实现队列&&队列实现栈
- 栈实现队列,队列实现栈
- 队列实现栈,栈实现队列
- 数据结构--队列实现栈&栈实现队列
- 栈和队列操作:栈实现、队列实现、双栈实现队列、双队列实现栈、栈实现O(n)求当前栈最大值
- php实现双队列
- 两个栈实现队列
- 用栈实现队列
- 两个队列实现栈
- 使用 P6Spy+sqlprofiler 监听和分析JDBC SQL语句
- 12这样的数字为什么成为业务运营的测量数
- 通用分页存储过程
- 用户自定义控件中的自定义属性为何在VS设计器中保存不了?
- Hibernate中多对多关系的常见问题
- 双队列实现栈
- Linux环境C语言编程(更新完毕)
- ObjC: 面向对象基础
- DevExpress关于换肤的问题
- UC故事 2011/11/21
- java读写文件大全
- C# html编码和文本的转换
- 云桌面 eyeOS发布专业版
- REST