双队列实现栈

双队列实现栈的主要思路,是一个队列为主队列,另外一个为辅助队列。

每次从栈中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     else
22     {
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 }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值