博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
左神算法书籍《程序员代码面试指南》——1_02由两个栈组成的队列
阅读量:4542 次
发布时间:2019-06-08

本文共 1691 字,大约阅读时间需要 5 分钟。

【题目】

编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)。

【解答】

队列是先进先出,栈是先进后出,那么一个栈存数据,

一个栈倒腾数据,当要弹出数据时,将数据栈倒腾到辅助栈,
然后弹出辅助栈的栈顶,再次入栈则直接压入数据栈,弹出则弹出辅助栈顶,
一旦辅助栈为空,则将数据栈倒腾数据进辅助栈,切记,数据栈只压入数据,而辅助栈只弹出数据

 【代码】

1 #include 
2 #include
3 #include
4 5 using namespace std; 6 7 8 //队列是先进先出,栈是先进后出,那么一个栈存数据, 9 //一个栈倒腾数据,当要弹出数据时,将数据栈倒腾到辅助栈,10 //然后弹出辅助栈的栈顶,再次入栈则直接压入数据栈,弹出则弹出辅助栈顶,11 //一旦辅助栈为空,则将数据栈倒腾数据进辅助栈,切记,数据栈只压入数据,而辅助栈只弹出数据12 13 class StackToQueue14 {15 private:16 stack
DataPush, DataPop;17 18 public:19 void Push(int a)20 {21 DataPush.push(a);22 }23 int Front()24 {25 if (DataPop.empty())26 {27 while (!DataPush.empty())28 {29 DataPop.push(DataPush.top());30 DataPush.pop();31 }32 }33 return DataPop.top();34 }35 36 void Pop()37 {38 if (DataPop.empty())39 {40 while (!DataPush.empty())41 {42 DataPop.push(DataPush.top());43 DataPush.pop();44 }45 }46 DataPop.pop();47 }48 };49 50 51 void Test()52 {53 54 StackToQueue myQueue;55 myQueue.Push(1);56 myQueue.Push(2);57 myQueue.Push(3);58 myQueue.Push(4);59 myQueue.Push(5);60 myQueue.Push(6);61 62 cout << myQueue.Front() << endl;63 myQueue.Pop();64 cout << myQueue.Front() << endl;65 myQueue.Pop();66 cout << myQueue.Front() << endl;67 68 myQueue.Push(7);69 myQueue.Push(8);70 71 cout << myQueue.Front() << endl;72 }

 

转载于:https://www.cnblogs.com/zzw1024/p/11170406.html

你可能感兴趣的文章
跑步计划
查看>>
mvc中使用uploadify批量上传的应用
查看>>
Kibana查询说明
查看>>
[AHOI 2009]chess 中国象棋
查看>>
UVA 11990 ”Dynamic“ Inversion(线段树+树状数组)
查看>>
Hibernate学习四----------Blob
查看>>
CTF-练习平台-Misc之 中国菜刀,不再web里?
查看>>
Mac系统配置JDK环境变量
查看>>
多项式累加
查看>>
剑指offer(18)二叉搜索树的后续遍历
查看>>
微信小程序一笔记账开发进度四
查看>>
bzoj 1070 费用流
查看>>
201671010139 徐楠 第四周总结
查看>>
JAVA链表简单实现
查看>>
[转载]T-SQL(MSSQL)语句查询执行顺序
查看>>
SignalR 行实时通信最大连接数
查看>>
开发进度6
查看>>
php方法重载
查看>>
三次握手和四次挥手(二)
查看>>
MySQL中的索引
查看>>