出栈序列问题
栈之根本——后进先出(Last In First Out,LIFO)
要解决这类问题:最本质就是出栈的时候,可以边入栈边出栈。
考虑:设栈的输入序列是1,2,3则出栈的序列有?
1,2,3 1入栈出栈,2入栈出栈,3入栈出栈
1,3,2 1入栈出栈,2入栈,3入栈出栈,2出栈
2,1,3 1入栈,2入栈出栈,1出栈,3入栈出栈
2,3,1 1入栈,2入栈出栈,3入栈出栈,1出栈
3,2,1 1入栈,2入栈,3入栈出栈,2出栈,1出栈
输入序列有n个数据元素,则出栈的可能序列有:
例如:某个栈的入栈序列是A,B,C,D,E,则可能的出栈序列是:
A、ADBEC
B、EBCAD
C、BCDEA
D、EABCD
对于选项A: A入栈出栈,之后BC入栈,D入栈出栈,选项显示B即将出栈,但是这时栈里还有BC而且C才是栈顶元素。所以A选项不可能。
对于选项B:如果E是第一个出栈的元素,则ABCD一定在E之前就入了栈,所以如果E是第一个出栈的元素,则出栈顺序一定是EDCBA
对于选项C: A入栈,B入栈出栈,C入栈出栈,D入栈出栈,E入栈出栈,最后A出栈。所以选项C正确。
对于选项D:同选项B。
标签:选项,出栈,入栈,BC,元素,问题,序列 来源: https://www.cnblogs.com/Mr-black-7/p/16099174.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。