数据结构的那些“事”

不知道大家第一次接触到严蔚敏老师的数据结构那本书最大的感受是什么,我感觉书中最大的特点之一就是使用伪代码来描述数据结构和算法,让我头大万分。
今天借这个机会说一说自己的感受 。
在这里插入图片描述书中说它所采用的伪代码是:类C语言 = C语言的一个核心子集 + C++的引用,而且这种类C语言还不拘泥于C语言的细节。所以,这就意味着什么?意味着:书的作者可以不按套路出牌。如果您按照书中的例子,将代码一行一行的输入到源文件,然后用C编译器去编译他,不一定能通过。这个时候,读者可能就会吐下槽:为什么作者不把例子用完全编译通过,运行无bug的C代码实现放在书上呢?还要我们自己去一行一行转换,一不小心还会踩到地雷?可能因为作者以为读者已经学过C语言并且具备了这种能力的实力。但其实作者在第一章做了一些说明。
在这里插入图片描述
在这里插入图片描述
这样的写法无形中增加了阅读代码的困难。问题来了,伪代码有一定的书写标准吗?答案:没有。你认为好,那就是好。但实际上就一定好吗?一千个人,一千种写法。好不好,最后付诸实践的时候,还是看评价试卷的老师,给分就是好,不给分或扣分就是不好。举一个例子,C语言的数组一般是从0开始,但是有些伪代码从1开始,那我写的伪代码从5开始,给不给分?
伪代码的好处就是写起来可以偷懒(但实际上出来混也总是要还的),交流方便;坏处就是没有标准,容易产生二义性。所以,我们到底应该以什么标准写呢?后来,我问老师数据结构期末考试时究竟要用伪代码写算法还是用C语言?老师说:只要题目中没有明确要求,都可以。后来又加了一句:一般考试题目中都不会有要求。接着又问老师:一定要跟严蔚敏的伪代码语法一致吗?老师说:不一定,把算法表达清楚即可。我本来想继续问一下老师:伪代码这个理论上实在太多写法了啊?无穷无尽啊?万一老师看不懂这种写法,不就悲催了吗?怎么整啊?emmm不过,看到大家都没问,我也没好意思问。再后来,苦思冥想了一下,犯不着跟自己较劲儿,考试就都用C来实现吧,肯定没毛病。如果公司面试算法,大概都会让你用一种语言实现吧,很少会要求写伪代码吧。
吐槽一句,书的名字《数据结构(C语言版)》,嘶认为并不合适,不如叫:《数据结构(类C语言描述)》更加准确。,大家可以到当当网搜索一下清华大学 殷人昆 老师编著的《数据结构(C语言版)》,他在此书的前言提出了一些不同的见解。在这里插入图片描述

“早期用伪代码描述,实践证明不可持续,因为很多用伪代码描述的算法转换为使用某种编程语言编写的程序后,怎么也通不过。原因是很多人编程语言的实践能力太差,算法的实现细节太粗糙。所以我认为,使用某种过程性语言,如C 等,对于学习和实现数据结构与算法是合适的。”
学校也应该与时俱进,更改一下教材用书,而不是20年都不变一次,让学生入门都难,怎么发展自己。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿明同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值