初级问题:入栈序列和出栈序列之间有什么规律吗?

fiveyes 2003-08-22 12:00:48
刚学完“栈和队列”,“基础知识题”的第1题是这样的:

设将整数1,2,3,4依次进栈,但只要出栈时栈非空,则可将出栈操作按任何次序夹入其中,请回答下述问题:
(1)若入、出栈次序为Push(1), Pop(), Push(2), Push(3), Pop(), Push(4), Pop(), 则出栈的数字序列为何(这里Push(i)表示i进栈,Pop()表示出栈)?
(2)能否得到出栈序列1423和1432?并说明为什么不能得到或者如何得到。
(3)请分析1,2,3,4的24种排列中,哪些序列是可以通过相应的入出栈操作得到的。

演算入出栈顺序倒挺容易,实在不行拿张纸一画就知道了。可是,为什么不能得到1423呢?(我试过了,不行,可是为什么呢?)还有,那24种排列中什么样的序列不能得到呢?这里有什么规律吗?
...全文
486 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fiveyes 2003-08-22
  • 打赏
  • 举报
回复
是这样啊,那我试试:
2431:4比后面的3和1都后进,而且3和1是按照由后往前排的,那这个应该可以。真的可以耶!
2413:1和3不是按由后往前排的,应该不行。真的不行!
4312:1和2不是按由后往前排的,应该不行。的确不行哎!
2143:按这个规律应该可以。真的可以!

哇,你说的(3)这个规律真是太好了!太感谢了!
wbh0360 2003-08-22
  • 打赏
  • 举报
回复
(1)1342
(2)1423不可能,因为4在2、3前出站,说明2、3按进入顺序在站中,
3必然先于2出站,故1432是可能的。
(3)若一个数比它后面的数都大,则其后的数必须是按由大到小顺序

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧