给大数据结构初学者:跨过算法和程序之间地鸿沟

给大数据结构初学者:跨过算法和程序之间地鸿沟

ID:35722151

大小:251.41 KB

页数:11页

时间:2019-04-14

给大数据结构初学者:跨过算法和程序之间地鸿沟_第1页
给大数据结构初学者:跨过算法和程序之间地鸿沟_第2页
给大数据结构初学者:跨过算法和程序之间地鸿沟_第3页
给大数据结构初学者:跨过算法和程序之间地鸿沟_第4页
给大数据结构初学者:跨过算法和程序之间地鸿沟_第5页
资源描述:

《给大数据结构初学者:跨过算法和程序之间地鸿沟》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、给数据结构初学者:跨过算法和程序之间的鸿沟【摘要】学习数据结构时,将各种基本操作通过程序实现,可以加深对算法的理解,也是提高编程能力的一种有效手段。针对初学者在搭建算法和程序之间联系困难的问题,本文以线性表部分为例,介绍了如何从读算法中找出实现程序的线索,围绕算法和程序之间的联系、抽象的描述和具体的实现之间的关系,引导读者学到抽象算法的精髓,最后对实践的路线、方案等进行了总结,并给出一些建议。【正文】  计算机是算法的科学。学习IT的童鞋,在算法中下多大的功夫都不为过。在学习《数据结构》课程的时候,将教材中给出的算法用程序代码描述出来,在实现的过程中,可以不断加深思考;在调试程

2、序的过程中,对算法的细节能够进行精细的钻研,这些都是获得算法精髓的方法。算法往往用“伪代码”的形式给出,学生在学习过程中,将这种抽象的描述与能够执行的具体形态的代码之间建立联系,使得算法形象起来,这样一个学习过程,以及由此带来的体验,将会使学生在技术成长之路上受益菲浅。  在我组织的“未来IT工程师协会/CSDN高校俱乐部”的活动中,结合同学们正在“算法与数据结构”课程,创办“算法达人修炼营”,组成合作学习团体,实践相关的各种算法,讨论在算法学习中遇到的问题,以此来提高驾驭算法的能力。为帮助同学们做好抽象的数据结构、算法与某种语言编写的程序之间的过渡,特撰写此文。  结合我校大

3、二同学已经有的知识结构,本文以严蔚敏老师的《数据结构(C语言版)》为基础说数据结构和算法,实现算法的语言用C和C++。(建议:读本文中,一边翻着教材才有感觉。)  一、读算法中找出实现程序的线索  要看懂算法,解决其中存在的障碍,需要同学们在读书时能够做到前后对照。  以P23中的算法2.3为例讲读算法的方法,以及如何前后对照。  算法2.3的顺序存储的线性表的初始化问题,伪代码是:  为便于后续的说明,为算法加些行号:[plain]viewplaincopyprint?1.1. Status InitList_sq(SqList &L){  2.2.  //构造一个空的线性表

4、L  3.3.  L.elem =(ElemType *)malloc(LIST_INIT_SIZE * size(ElemType));  4.4.  if(!L.elem) exit(OVERFLOW); //存储分配失败  5.5.  L.length = 0;    //空表长度为0  6.6.  L.listsize = LIST_INIT_SIZE;    //初始存储容量  7.7.  return OK;  8.8. }    这个算法要解决的问题非常显然,用思维导图表达出来是:  算法中的逻辑非常简单,常有同学说,算法是能看懂。这得益于抽象(后面专门要说),使

5、我们忽略了很多实现中要考虑的细节,所以容易看懂,这是抽象的好处。而恰好由于忽略了实现细节中的具体形态,使得在考虑如何实现算法时出现障碍。这不是一个大问题,却成为初学者起步的一个障碍,尤其是对程序设计的功底并不很深的同学。(程序设计功底的加强是必需的,但已经到了这个阶段,并不是一定要先补上那一课再能学数据结构,时候不等人。实际上,学数据结构,同时也促程序设计。)  障碍主要来自于,算法描述中出现的“词汇”和曾经编程中用过的似乎并不相同。“字”都不认识,谈何理解,又何谈实现。实际上,会看书的同学应该发现,算法中出现的“词”,在教材前面都曾经出现过,我们找出来,将其联系到一起。  说

6、有些同学不会看书可能委屈,更多的是没有耐心,一门课程起步阶段,基础性的内容要看细了。  算法第1行:Status InitList_sq(SqList &L)  InitList_sq是函数名自不用说。Status 显然是函数InitList_sq()的返回值类型,但究竟是什么类型呢?C和C++中没有这种数据类型,其他语言中也没有,可以猜到是自定义类型。教材P10有解释:  教材接着给出了在C语言实现算法时的建议:[cpp]viewplaincopyprint?1.//Status是函数的类型,其值是函数结果的代码  2.typedef int Status    其实如果用P

7、ASCAL实现,需要按PASCAL语言的语法写作:[delphi]viewplaincopyprint?1.type Status=integer;    一个函数执行结束后,函数结果的代码给出一些约定(如1是成功,0是失败)通过返回值通知调用函数执行的情况,这种设计很常见。那么,此处Status用整型表示,其具体取值与含义是什么?从算法第7行 return OK;可以看出,这个OK就是Status可取的值。同样在P10,有一些常定义(只列两行,ERROR在其他函数中用到):[cpp]vie

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。