关于栈结构的一个简单练习是:给定入栈的字符序列,判断当前序列能否由初始序列通过一系列的进栈出栈操作得到。下面通过展示两道这种类型的题目来总结一下这种问题处理的思路。 在大方向上,我们应该都是通过基础的栈的进栈出栈操作来模拟生成目标串的过程,判断在过程中有没有不合逻辑之处 。但是在具体实现上可以用多种写法,比如可以以原串为主,也可以以当前串为主来进行循环。 第一题我用了链栈来实现。 用i,j两个指针 ...
2020-04-15 21:40 0 595 推荐指数:
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等 ...
完整题目是这样的:给我们两个序列,第一个序列表示栈的压入顺序,然后让判断第二个序列是不是是否是该栈的弹出序列。现设第一个序列为[1,2,3,4,5],第二个序列为[3,2,5,4,1],可以看出这个出栈顺序是合法的,那么我们怎么通过程序来验证呢? 既然是判断栈的出栈顺序 ...
输入两个整数序列。其中一个序列表示栈的push顺序,判断另一个序列有没有可能是对应的pop顺序。为了简单起见,我们假设push序列的任意两个整数都是不相等的。 比如输入的push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。因为可以有如下的push和pop序列 ...
合理的出栈顺序也是面试算法经常考察的一部分,堆栈(stack)的后进先出性质我们都了解。如果给定了一个入栈的序列,判断一个序列是否为合理的出栈顺序该如何进行呢。 例如,我们给定了入栈顺序为 1,2,3,4,5 那么【序列1】3,2,5,4,1 是合理的; 【序列 ...
在大学学过数据结构课的人相信都对这样一个问题不陌生,描述大致如下: 某个程序可以进行一系列入栈和出栈的混合操作。每次入栈操作将整数0到9中的一个元素按顺序压入栈,出栈操作打印弹出栈顶的整数。问给出的一个打印序列是否合法。 这道题应该是数据结构考试的一道经典问题了。如果是在卷面上作答 ...
这道题不管是面试还是笔试的选择题都非常爱出的一道题 题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个 ...
具体思路看视频讲解 把出栈序列看成是一个队列, 同时定义一个栈,每次压入一个元素到栈中,对比栈顶元素和队头元素是否相等,若相等则出栈当前元素并且出队出栈序列 若当前栈顶元素不等于队列头元素,则持续压栈 具体讲解看视频讲解:合法性的判断 ...