`

【100题】第二十九 栈的push、pop序列

 
阅读更多

一,题目:输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。

如果我们希望pop的数字正好是栈顶数字,直接pop出栈即可;
如果希望pop的数字目前不在栈顶,我们就到push序列中还没有被push到栈里的数字中去搜索这个数字,并把在它之前的所有数字都push进栈。
如果所有的数字都被push进栈仍然没有找到这个数字,表明该序列不可能是一个pop序列。

其实这是一个计算机考研时经常遇到的一道选择题,题目给定一个压栈序列,然后找出选项中哪一个一定不是可能的出栈序列。
二,分析

例如输入顺序为1 2 3 4 5不可能输出顺序为: <1 4 23 5> <4 2 3 5 1 > <1 5 2 3 4 > <3 4 1 2 5>……

可能输出顺序为: <1 2 3 4 5 ><5 4 3 2 1 ><2 1 3 4 5> <3 2 1 5 4 >……

如何判定输出顺序<1 4 2 3 5 >为不可能顺序?

新建一个栈m_stack push[]={1 2 3 4 5} pop[]={1 4 2 3 5}

第一轮 m_stack.push(push[0]); pop[0]=m_stack.top--->m_stack.pop;

第二轮 m_stack.push(push[1]); pop[1]!=m_stack.top--->m_stack.push[2] m_stack.push[3] ----pop[1]=m_stack.top--->m_stack.pop

第三轮 m_stack.push[4]; pop[2]!=m_stack.top ---->push 中没有全部pop出来 所以不是正确的输出序列

三,源码

分享到:
评论

相关推荐

    栈的相关操作PUSH、POP等

    栈的相关操作,工作以后做的第一个程序(C的),我练手的,虽然以前做过。留着纪念。

    数据结构:图解链表,用链表实现栈的Pop和Push(c语言版)

    数据结构:图解链表,用链表实现栈的Pop和Push(c语言版) 出栈以及入栈我们只要可虑栈顶就可以,所以我们就只考虑对栈顶就行插入和删除就可以,上代码 void Pop(SqStack* s,Elemtype data) { assert(s); if (s-&gt;...

    使用栈思想 密码锁 PUSH POP

    数据结构与算法实验题 5.1 密码 ★实验任务 小米终于来到了学校,很高兴,他解决了学长留给他的问题,得到了学长的赞赏。他打 点行李回寝室去了,到了宿舍门口才发现这里的门居然不是用钥匙开的,怪不得刚才小米 ...

    Queue_栈队列_pop_

    任务描述栈和队列都提供 Push/Pop 两种操作,其中 Push:加入一个元素。Pop:弹出一个元素。给出一个线性结构的进出顺序,判定这个结构是栈还是队列。(40’) 输入描述第一行输入一个整数s,代表有s组测试数据。第一...

    微软等面试100题系列 29题

    微软等面试100题系列 29.栈的push、pop序列 题目:输入两个整数序列。其中一个序列表示栈的push顺序, 判断另一个序列有没有可能是对应的pop顺序。

    FIFO.zip_fifo pop_fifo pop push_fifo push_fifo push怎么写_flush_fif

    FIFO管理,包括fifo_push,fifo_pop,fifo_flush等

    寒假12.顺序栈_栈_pop_

    用C++实现栈的存储、pop、push等操作

    pushpop-sendgrid:Pushpop 的 Sendgrid 插件

    安装将pushpop-sendgrid添加到您的 Gemfile: gem 'pushpop-sendgrid' 或将其安装为 gem: $ gem install pushpop-sendgrid用法sendgrid插件为您提供了一个 DSL 来指定典型的电子邮件参数。 下面是一个例子: ...

    顺序栈的运算实现(创建、销毁、入栈push、出栈pop、栈满、栈空、数量)

    内容概要:顺序栈的运算实现,包括:创建、销毁、入栈push、出栈pop、栈满、栈空、数量 能学到什么:这是一种功能受限的表结构,通过学习该顺序栈的入出入原理,有助于深入理解数据结构,为后续的框架学习等有很大...

    [详细完整版]数据结构习题.pdf

    练习题 1. 栈和队列的共同点是__C__ A. 都是先进先出 B .都是先进后出 C.只允许在端点处插入和删除元素 D.没有共同点 2. 元素 A,B,C,D 依次进顺序栈后,栈顶元素是_D__,栈底元素是__A_ 3. 经过以下栈运算后,x 的值是_...

    pushpop-pusher:Pusher 实时服务的 Pushpop 插件

    pushpop-pusher 插件。 安装 将pushpop-pusher添加到您的 Gemfile: gem 'pushpop-pusher' 或将其安装为 gem: $ gem install pushpop-pusher 用法 pusher插件为您提供了一个 DSL,用于指定要发布和事件的通道...

    程序员面试题精选100题

    我看到这道题目时,第一反应就是每次push 一个新元素时,将栈里所有逆序元素排序。这样栈顶元素将 是最小元素。但由于不能保证最后push 进栈的元素最先出栈,这种思路设计的数据结构已经不是一个栈 了。 在栈里添加...

    链式栈的运算实现(创建、销毁、入栈push、出栈pop、栈空、数量)

    内容概要:链式栈的运算实现,包括:创建、销毁、入栈push、出栈pop、栈空、数量 能学到什么:这是一种功能受限的表结构,通过学习该链式表的入出入原理,有助于深入理解数据结构,为后续的框架学习等有很大帮助。 ...

    sta.rar_input.txt_pop

    第1行是正整数n,表示有n个栈操作。接下来的n行, 每行给出一个栈操作指令。栈操作指令“PUSH A B”表示将正整数B加入编号为A的栈顶; 栈操作指令“POP A”表示输出编号为A的栈顶元素输入文件示例 输出文件示例 ...

    swift-iOS自定义转场动画-push和pop

    iOS7.0后苹果提供了自定义转场动画的API,利用这些API我们可以改变 push和pop(navigation非模态),present和dismiss(模态),标签切换(tabbar)的默认转场动画。

    pushpop-starter:克隆此存储库以开始编写和部署您自己的 Pushpop 作业

    pushpop-启动器 这是用于创建项目的入门存储库! 开始 先决条件 本指南将假设您已安装这些东西。 Ruby 捆绑器 安装 这个入门项目 解压缩包并将 pushpop-starter 文件夹放在您想要的任何位置 打开终端,然后cd到您的...

    pushpop-slack:通过Pushpop将消息发送到Slack!

    推杆松弛一个用于向Slack发送消息的插件安装将pushpop-slack gem添加到您的Gemfile gem 'pushpop-slack' 或将其安装为宝石$ gem install pushpop-slack 您还需要为Slack Webhook设置一个环境变量。 这是如何做: 转...

    pushpop-keen:适用于Pushpop的Keen IO插件

    安装将pushpop-keen添加到您的Gemfile中: gem 'pushpop-keen' 或将其安装为gem: $ gem install pushpop-keen用法查询方式keen插件为您提供了DSL以指定Keen查询参数。 这些查询参数用于使用查询数据。 这是一个示例...

    pushpop-product-hunt:用于根据产品搜索活动触发作业的 Pushpop 插件

    安装将pushpop-product-hunt添加到您的Gemfile中: gem 'pushpop-product-hunt' 或将其安装为 gem $ gem install pushpop-product-hunt用法Product Hunt 插件为您提供了一个简单的界面,用于从 Product Hunt 中提取...

    剑指offer算法实现java版——面试题21包含min函数的栈

    实现一个栈,要求使用O(1)时间获取栈中最小值,O(1)执行pop、push操作。

Global site tag (gtag.js) - Google Analytics