蒟蒻数据结构观>>出栈顺序问题

本文深入解析栈(stack)这一线性表数据结构,强调其后进先出(LIFO)的特点,并通过具体实例探讨栈的入栈和出栈顺序问题,帮助读者理解栈的基本原理及其应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

栈(stack),是一种只能在栈顶(top)上插入(push)删除(pop)的线性表。栈的特点是last in first out(后进先出),就像一个只允许单行通过的死胡同。、

出栈顺序问题

本问题无需多言,把握住LIFO原则即可。可以简单总结为在e后出栈的元素如果比e先进栈,则为逆序。这一点很好理解,在e后入栈的元素如果比e先进栈,那么它们按顺序被压在e下面某处,即使pop了,这两个元素也应该是逆序,否则为非法。

明白了这一点之后再来思考一个问题叭~
入栈顺序是1,2,3···n,出栈顺序是p1,p2···pn,若p1=3,求p2可能的取值个数。
在p1前入栈的有2个元素1和2,那么这两个元素位置关系已经确定,只可能是2,1。所以p2的值不可能取1和3,即有n-2个。
(今天上课的时候prof.C讲的有些问题,他说可能是n-2或n-3,但这样说是不对的。他思考了p2入栈顺序在p1前后两种情况,这样分析本身就过于繁琐,我们想要快速求解就不能分析什么符合情况,而要根据LIFO的原则分析剩下的n-1个元素有哪些不符合情况,毕竟理论上它们都有可能。老师的问题在于,题目稳定是可能的取值,而n-3个的所有元素是包含在n-2个中的,取并集即可)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值