我现在没学完C语言,但是学校已经开了数据结构课程,感觉像听天书一样,如何更好地理解数据结构?
首先有个东西你需要了解到,程序 = 算法 + 数据结构,无论我们是学Java、Python、PHP还是C语言,对数据结构都要有一定的了解,如今很多学编程的人,只注重语法上的使用,当然或多或少都有对数据结构有学习过的,而那些根本没学过数据结构的人呢?就只能强行去理解使用。其实数据结构是一门具有艺术性的学科。
如何更好地理解数据结构?
任何的数据结构的操作,其实都是建立在实际的物理模型之上,我们在学习数据结构的时候,首先你要了解长相,其次在做相应结构实际操作是要根据自己的逻辑图去分析,所有的代码源自于自己的物理模型,数据结构中的结构体定义其实就是描述事物的特征.
一下简单的举例一下
栈结构
大顶堆
数据结构和具体语言无关,大概了解判断,循环之后,再懂点指针或对象引用,任何语言都能实现数据结构的例子。
现在看不懂数据结构,我觉得是老师或书本引导的不好。建议你看看「漫画算法_小灰的算法之旅」,啊哈算法,这类轻松一些的书。能帮你快速学会。而且效果不差于严蔚敏的数据结构教程。
多说一句,大学的教科书虽然经典,但不一定适合每个人,甚至不适合大多数现代大学生,所以多补补课外的书,在线课程,对理解会有帮助。
没有C语言的基础,学习数据结构确实会有点吃力。反过来不知道数据结构,学C语言也有点象盲人摸象了。我觉得两门课一起学是个不错的安排。可是,这不是掉到了一个死循环里边去了吗?不懂C学不好数据结构,不懂数据结构又学不好C,到底该如何是好呢?我建议您分四步走。
第一步,学习一下计算机的基本原理。这对理解程序的运行方式是很有必要的。计算机的核心CPU就如同一个小计算器:只有一块屏幕负责控制数据的输出和输入,一个存储器负责暂存中间结果。要想用这样一个计算器完成复杂的计算,就必须把复杂的计算拆成多步骤的基本计算,这也就是为什么要编程的原因了。
第二步,学习一下操作系统的原理。这对于理解程序结构(它就是数据结构的典型应用)很有帮助。早期的计算机没有操作系统,程序写在打孔的纸带上(这个纸带就是今天的内存),程序员转动纸带把指令读进CPU进行运算。这个过程非常麻烦,操作系统就是为了把这个过程自动化才设计出来的。理解了操作系统的原理,您就会明白C语言是怎么一回事,所谓的编译和链接又是在做什么。程序结构中有很多种数据结构的应用,象什么堆呀、栈呀什么的。您还能接触到另一个经典的数据结构-硬盘的构造(硬盘上的数据结构是典型的树状结构)。您要是弄清楚了程序执行的原理以及硬盘上文件管理的工作原理,您对程序和数据结构就有了一个很全面的认识了。接下来的学习就会顺风顺水了。
第三步,学习一下C语言的基本语法、编译链接和调试方法。能写简单程序就可以了。这一步的重点是掌握编程的基本操作,要能做到独立完成调试和发布程序。这一步对C语言中的指针、链表什么的难点不需要太纠结,因为接下来的数据结构可以帮助您深入理解这些东东。
第四步,通过编程实践各种数据结构。数据结构比较抽象,只靠脑子想是很难理解的,最好的办法就是用C语言编程实现各种结构,这个过程既能锻练编程能力,又能对数据结构产生形象的认识。数据结构并不深奥,它完全就是为了配合计算机的机械运算的方式设计出来的计算步骤。
好了,我觉得您学校的课程安排相当合理。而我只是一只有二十多年开发经历的IT老鸟,并不擅长于编程教学,我的建议仅供参考,具体怎么学请多跟老师交流。
标签: c语言课程设计总结