LVS package 另类堆栈 cmd drupal7 icons Draggabilly photoshop视频教程全集下载 java解析json数组 mysql组合索引 python安装mysql python程序实例 java中的对象 java正则表达式匹配 java的socket通信 java日期格式 linux系统命令大全 python入门经典 手机模拟器下载 collect dnf传说装备 源计划艾克 R语言初学者指南 苹果手机添加邮箱 execryptor flash教程 php验证码 opencv是什么 ps阵列 太阳代理ip fabfilter smartupload ios数据恢复 动漫情头一男一女两张 php书籍 dnf虚拟机 php工具箱 mydock mysql主键 图片转线稿
当前位置: 首页 > 学习教程  > 编程语言

剑指offer-两个栈实现一个队列

2020/11/4 14:52:19 文章标签:

思路: 分析 队列的特性是:“先入先出”,栈的特性是:“先入后出” 当我们向模拟的队列插入数 a,b,c 时,假设插入的是 stack1,此时的栈情况为: 栈 stack1:{a,b,c} 栈 stack2&#x…

思路:

  1. 分析
    队列的特性是:“先入先出”,栈的特性是:“先入后出”

当我们向模拟的队列插入数 a,b,c 时,假设插入的是 stack1,此时的栈情况为:

栈 stack1:{a,b,c}
栈 stack2:{}
当需要弹出一个数,根据队列的"先进先出"原则,a 先进入,则 a 应该先弹出。但是此时 a 在 stack1 的最下面,将 stack1 中全部元素逐个弹出压入 stack2,现在可以正确的从 stack2 中弹出 a,此时的栈情况为:

栈 stack1:{}
栈 stack2:{c,b}
继续弹出一个数,b 比 c 先进入"队列",b 弹出,注意此时 b 在 stack2 的栈顶,可直接弹出,此时的栈情况为:

栈 stack1:{}
栈 stack2:{c}
此时向模拟队列插入一个数 d,还是插入 stack1,此时的栈情况为:

栈 stack1:{d}
栈 stack2:{c}
弹出一个数,c 比 d 先进入,c 弹出,注意此时 c 在 stack2 的栈顶,可直接弹出,此时的栈情况为:

栈 stack1:{d}
栈 stack2:{c}
根据上述栗子可得出结论:

当插入时,直接插入 stack1
当弹出时,当 stack2 不为空,弹出 stack2 栈顶元素,如果 stack2 为空,将 stack1 中的全部数逐个出栈入栈 stack2,再弹出 stack2 栈顶元素


本文链接: http://www.dtmao.cc/news_show_350242.shtml

附件下载

上一篇:C语言程序设计代码

下一篇:Mybatis VS JPA

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?