本来上一节介绍链式表示时,还应提到循环链表和双向链表,但我决定还是不提为好。如果将学习一门课程的方法比作遍历算法的话,我觉得广度优先算法要比深度优先算法好。一门全新的课程,如果一开始就进入具体的细节的话,很容易有挫折感,进而丧失兴趣。所以如果能对这门课程有一个大局观,了解这门课程是讲什么的,涉及那些知识,学了有什么用,然后再由浅入深、循序渐进的逐步深入应该效果更好。但是很可惜,学校授课时从来都是按照深度优先算法,把一章的细节讲得清清楚楚再进入下一章。结果常常是,上第一节课时还很有兴趣的同学在听完一章后很多都打消了再听下去的念头。
既然我是自学,自然是按照广度优先算法,不关心每一个例程是怎么实现的,先在脑子中建立各种数据结构的概念和模型,更多的细节写程序时自然会考虑到。顺便提一下,我觉得数据结构这门课一定要写大量的程序才可以真正学透,光是看懂书上的例程不会有太大帮助。套用前面提到的先逻辑后物理的思路,看书是逻辑层面的,只在脑子中弄清概念、建立模型,而写程序是物理层面的,把脑子中的概念和模型用编程语言描述出来。
回到开头提到的循环链表和双向链表,我觉得只要理解这两个概念就可以了,真正写程序时如果有这种需要,能想起来用它们就可以了,至于实现细节我相信对于一个熟练程序员来说不是什么问题。