当前位置: 首页 > news >正文

用队列实现栈---超全详细解

以下内容是从网站中学习的。

使用队列实现栈的下列操作:

push(x)--元素x入栈

pop()--移除栈顶元素

top()--获取栈顶元素

empty()--返回栈是否为空

注意:

你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。

你所使用的语言也许不支持队列。 你可以使用 list 或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。

你可以假设所有操作都是有效的(例如, 对一个空的栈不会调用 pop 或者 top 操作)。

思路

(这里要强调是单向队列)

刚刚做过栈与队列:用栈来实现队列的同学可能依然想着用一个输入队列,一个输出队列,就可以模拟栈的功能,仔细想一下还真不行!

队列模拟栈,其实一个队列就够了。

一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外)重新添加到队列尾部,此时再去弹出元素就是栈的顺序了。

使用一个Queue实现:

class MyStack{Queue<Integer> queue;public MyStack(){queue = new LinkedList<>();}//每 offer一个数(A)进来,都重新排列,把这个数(A)放到队列的队首public void push(int x){queue.offer(x);//将新元素加到队尾int size = queue.size();//移动除了A的其他元素while(size > 1){queue.offer(queue.poll());size--;}}public int pop(){return queue.poll();}public int top(){return queue.peek();}public boolean empty(){return queue.isEmpty();}}

时间复杂度:push:O(n) 其他是O(1)

空间复杂度:O(n)

http://www.dtcms.com/a/466314.html

相关文章:

  • 网站空间安装辽宁建设工程造价信息网
  • Google 智能体设计模式:异常处理与恢复
  • 鸿蒙:实现滑动选择日期操作
  • 二进制世界如何表达现实世界的文字、图像和视频
  • 做视频网站怎么盈利模式绍兴高端网站设计
  • 网站建设开发方式包括江门云建站模板
  • docker-compose 启动 elk
  • Element 问题:解决 el-menu 收缩不完全问题
  • Sora 2:视频AI的“ChatGPT时刻”来了!
  • 关于淘宝店网站建设的可行性报告如何同步wordpress
  • 开发一个网站做爬虫建设工程司法解释(一)
  • Java全栈学习笔记39
  • antd 黑暗模式 (v5 react)
  • 7. React组件基础样式控制:行内样式,class类名控制
  • 网站优化 保定做网站必须得ipc
  • 佩京VR自然灾害学习机-防震减灾科普馆互动设备-VR防灾减灾一体机
  • 全球 VR 模拟器市场竞争格局报告:头部企业战略布局、市场份额
  • 用vs2017做网站成都微信网站建设
  • 成都电商网站开发有ip地址如何做网站
  • 从零开始:用 C 语言构建你的第一个网络通信程序 (Socket 编程入门)
  • 【c++】深入理解string类(4)
  • 南京做网站优化的企业传智播客php网站开发实例教程
  • 华科尔地面站使用技巧
  • 完成docker方式的ros环境配置
  • webshell查杀 流量 日志分析
  • 1999-2018年地级市经济增长数据
  • 网站建设和维护的职责关键词优化排名易下拉稳定
  • 甘肃省住房和城乡建设厅安置局网站珠海选车牌号网站系统
  • K8s-kubeadmin 1.28安装
  • 建站展示网站运营公司哪家效果好