一,题目:输入两个整数序列。其中一个序列表示栈的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出来 所以不是正确的输出序列
三,源码
分享到:
相关推荐
第29题是关于栈(Stack)操作的一个经典问题,题目要求判断给定的两个整数序列中,第二个序列是否可能由第一个序列的push和pop操作生成。 栈是一种数据结构,遵循“后进先出”(LIFO, Last In First Out)的原则。...
第二题通过栈的出栈序列,考查学生对栈操作的掌握程度。栈是一种后进先出(LIFO)的数据结构,仅允许在栈顶进行插入(push)和删除(pop)操作。而第三题则要求考生对指针的概念有深入理解,指针是C++中用于存储内存...
第二题关注的是矩阵的压缩存储问题,具体而言是如何存储一个上三角矩阵。上三角矩阵是指所有主对角线以下的元素都是零的矩阵。为了节省空间,通常只存储非零元素,即主对角线及其上方的元素。题目提供了几种不同的...
- 第一次Push入栈a,第二次Push入栈b,第一次Pop出栈b,第三次Push入栈c,第二次Pop出栈a,第四次Push入栈d,第五次Push入栈e,第三次Pop出栈c。 - **答案:**根据上述分析,出栈序列应为b,a,c,选项A正确。 ##...
### 数据结构知识点解析 #### 一、选择题解析 **1. 在单链表中,存储每个结点...3. 序列100,85,不是一个完整的序列,因此无法判断是否为堆,需要补充完整后再进行判断和调整。 以上是对题目中各知识点的详细解析。
- 第二个TCP段紧接着第一个发送,所以它的起始序列号为500,长度为500B。 - 因此,主机乙收到两个段后,期望接收的下一个字节的序列号为1000。 **答案**:D. 1000 #### 九、数据结构的选择 **题目描述**: 查找或...
12. 顺序栈的输入输出序列:根据PUSH和POP操作,可以推断出输入序列和输出序列。 13. KMP算法的next函数:模式串P='abaabcac'的next函数值序列可以手动计算或通过KMP算法得出。 14. 连通图的连通分量:在一个无向...
2. **第二章 线性表答案**: 线性表是最基础的数据结构之一,包括顺序表和链表。顺序表是连续内存存储,链表则通过指针链接元素。这部分可能会讲解插入、删除、查找等操作的具体实现。 3. **第三章 栈和队列**: ...
12. 通过PUSH和POP操作,输入序列变为abcde,输出序列取决于操作顺序,最终输出可能是acedb,栈顶指针可能变为1012H。 13. 模式串P='abaabcac'的next函数值序列是01234234。 14. 任意连通图的连通分量指的是图中...
- 栈是一种先进后出(FILO)的数据结构,支持两种主要操作:压栈(push)和弹栈(pop)。 - 队列是一种先进先出(FIFO)的数据结构,支持两种主要操作:入队(enqueue)和出队(dequeue)。 - **题目解析**: - 给定一个序列...
可以使用数组或者ArrayList来实现栈的功能,定义push、pop、peek等方法来操作栈顶元素。 43. 集合的作用是什么? 集合主要用来存储对象的引用,支持快速检索、排序和迭代等操作。集合框架提供了一套设计良好的接口...
- **栈的基本操作**: 栈是一种后进先出(LIFO)的数据结构,支持两种主要操作:压栈(push)和弹栈(pop)。 - **操作序列**: 根据题目给出的操作序列,可以得到出栈的元素序列为1, 3, 2。 **答案**: (B) {1,3,2} **选项...
栈的push、pop序列 - **知识点**: 栈的基本操作、序列生成。 - **应用场景**: 判断一个给定的序列是否可以由栈通过一系列的push和pop操作生成。 ### 25. 在从1到n的正数中1出现的次数 - **知识点**: 数学规律、...
例如,栈(Stack)是一个常见的ADT,它支持push(压入)和pop(弹出)操作。 #### 五、算法及算法设计要求 - **算法**:算法是一系列解决特定问题的指令集。算法设计要求考虑算法的时间复杂度和空间复杂度。 - **时间...
- 其主要操作包括压栈(push)和弹栈(pop),分别用于向栈顶添加元素和移除栈顶元素。 16. **栈的应用:** - 栈广泛应用于函数调用、表达式求值、括号匹配等问题中。 - 它是解决递归问题的有效工具之一。 17. ...
1.4.9. 栈的 push、pop 序列[数据结构] .......................................................... 99 1.4.10. 统计整数二进制表示中 1 的个数........................................................102 1.5....
### 经典Python面试题详解 #### 1. 为什么学习Python? - **简洁易读**:Python语法简单明了,降低了学习门槛。 - **应用广泛**:可用于Web开发、数据分析、人工智能等多个领域。 - **社区活跃**:拥有庞大的...
编写一个使用数组实现的栈类,包含push(压栈)、pop(弹栈)、isEmpty(判断栈是否为空)和peek(查看栈顶元素但不弹出)等基本操作。** 示例代码(伪代码): ```plaintext class ArrayStack: def __init__...
《汇编语言复习题》是针对汇编语言学习者的一份考试参考资料,涵盖了汇编语言的基础知识和常用操作。以下是对部分题目涉及知识点的详细解释: 1. ASCII 码是字符编码的一种标准,数字1的ASCII码值是31H(十六进制...
#### 二十九、如何格式化日期? 使用`DateTimeFormatter`来格式化日期: ```java import java.time.LocalDate; import java.time.format.DateTimeFormatter; public class FormatDate { public static void main...