博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
careercup-栈与队列 3.5
阅读量:5086 次
发布时间:2019-06-13

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

3.5 实现一个MyQueue类,该类用两个栈来实现一个队列。

解答

队列是先进先出的数据结构(FIFO),栈是先进后出的数据结构(FILO), 用两个栈来实现队列的最简单方式是:进入队列则往第一个栈压栈, 出队列如果第二个栈不为空,则直接从第二个栈出队列,否则将第一个栈的数据依次压入第二个栈,然后出栈。每次有数据进入队列,直接进入第一个栈; 每次有数据出队列,在第二个栈不为空时直接从第二个栈出队。

C++实现代码:

#include
#include
using namespace std;class MyQueue{private: stack
s1; stack
s2;public: void push(int x) { s1.push(x); } void pop() { if(s1.empty()&&s2.empty()) return; if(s2.empty()&&!s1.empty()) { while(!s1.empty()) { s2.push(s1.top()); s1.pop(); } s2.pop(); } else s2.pop(); } int front() { if(s1.empty()&&s2.empty()) return 0; if(!s2.empty()) return s2.top(); while(!s1.empty()) { s2.push(s1.top()); s1.pop(); } return s2.top(); } int size() { return s1.size()+s2.size(); } bool empty() { return s1.empty()&&s2.empty(); }};int main(){ MyQueue q; for(int i=0; i<10; ++i) { q.push(i); } cout<
<

 

转载于:https://www.cnblogs.com/wuchanming/p/4143734.html

你可能感兴趣的文章
url查询参数解析
查看>>
http://coolshell.cn/articles/10910.html
查看>>
[转]jsbsim基础概念
查看>>
DIV和SPAN的区别
查看>>
第一次使用cnblogs
查看>>
C#语法糖之 session操作类 asp.net
查看>>
2015 Multi-University Training Contest 3
查看>>
使用Gitblit 在windows 上部署你的Git Server
查看>>
217. Contains Duplicate
查看>>
vue2.0 关于Vue实例的生命周期
查看>>
jenkins 更换主数据目录
查看>>
Silverlight中恼人的g.i.cs错误
查看>>
SQLite 数据库增删改查
查看>>
<s:iterator>的status
查看>>
C++入门--1.0输入输出
查看>>
让搭建在Github Pages上的Hexo博客可以被Google搜索到
查看>>
Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十四章:曲面细分阶段...
查看>>
在WPF控件上添加Windows窗口式调整大小行为
查看>>
背水一战 Windows 10 (36) - 控件(弹出类): ToolTip, Popup, PopupMenu
查看>>
打开3389
查看>>