博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构经典问题——出栈顺序 转载至:canlynet微博
阅读量:6955 次
发布时间:2019-06-27

本文共 809 字,大约阅读时间需要 2 分钟。

对于数据结构的问题,如果思路稍有不对,就容易陷入逻辑混乱。我希望自己对数据结构的理解,能够给大家一点帮助。我会将所有我有过心得的问题在我的博客上写出来,欢迎大家浏览,如果有什么不对的地方,还请大家指正,有问题可以给我留言,我会尽量解决,谢谢。

声明一下我写博客的初衷:不是炫耀,而是回报。因为我在计算机方面的知识好多都从网上找到答案,因此我也

将自己搜寻整理的材料,自己写的材料,展示到网上,算是尽一份力吧。

一个经典问题如下(不愿意看思路的可以直接看红色字体部分):

一个栈的入栈序列是a,b,c,d,e则栈的不可能的输出序列是:()

A edcbd         B decba           C dceab            D abcde

栈之根本——先进后出(first in,lastout)初次接触到这个问题的人,或许会认为入栈abcde,所以出栈只能是edcba所以BCD都不对。

其实是这个问题描述有歧义,应该是分段入栈的顺序,也就是说,可能先入栈a,取出a,入栈b,取出b……,所以D也是可能的。

知道这个意思了以后,就要明确这个问题的矛盾根本所在:第一次出栈d,说明什么?说明a,b,c一定早已入栈(入栈顺序决定的)。那么在出栈d以后,a,b,c的出栈顺序一定是c,b,a,而不用理会中间穿插着出栈了d后面的字符(因为可以再入栈,再出栈嘛)。所以立即选中C,不用犹豫,理由简单:d出栈了,abc一定已经入栈,那么abc只能以cba的顺序出栈,C不符合,OK!This problem is so esay, Thanks for my teacher Wang Shanshan.

数据结构中的思路一定要单一,要简明,抓住问题根本,万不可考虑过多,试探法只有在不知道解题思路的情况下去尝试,尝试多了,你会发现,逻辑容易混乱,俗称“我晕”!

转载于:https://www.cnblogs.com/jianheng/p/4102643.html

你可能感兴趣的文章
静态方法工厂模式
查看>>
该是总结沉淀的时候了
查看>>
正则表达式学习笔记
查看>>
sublime text笔记
查看>>
MySQL中,修改表的某一字段的部分值
查看>>
Java TreeMap 源码解析
查看>>
在Ubuntu 12.04 上编译调试 OpenJDK8
查看>>
WPF一段代码搞定所有的点击事件
查看>>
Mac上同步git遇到N多坎坷
查看>>
kettle-自定义常量数据->删除
查看>>
第十二周项目3-用递归方法求解(二)
查看>>
php中base64_decode与base64_encode加密解密函数
查看>>
127. Word Ladder
查看>>
Node.js权威指南 (8) - 创建HTTP与HTTPS服务器及客户端
查看>>
CSharp设计模式读书笔记(6):建造者模式(学习难度:★★★★☆,使用频率:★★☆☆☆)...
查看>>
Docker_1 安装Docker-CE
查看>>
shell 变量赋值与替换
查看>>
Codeforces Round #469 (Div. 2)C. Zebras
查看>>
haproxy教程
查看>>
保存列表中的托管元数据,TaxonomyField 字段类型
查看>>