之前在知乎上看见怎么学习数据结构下一位答主的回答,他引用了N.Wirth(沃斯)的话:程序=数据结构+算法。(哈,菜鸟无法验证这句话的正确性有多大)但毫无疑问的是,数据结构应当是一名菜鸟程序狗要重点学习的东西,是不可忽略的一部分。
所以,这篇随笔我将列出接下来一段时间我的数据结构学习计划-菜鸟的爬行路之数据结构:
菜鸟的爬行路之我的数据结构学习计划
大体来讲,在学习数据结构的基础时,应当注重两件事:
按照quora上的大牛来讲就是,第一件事是试着把数据结构图形化,视觉化。在直觉上对于数据结构有个大致映像使用它是怎样的感受,抽象上和具体实现上是什么样子的.这就是最重要的事情.并且无论是对于简单的队列,栈还是天杀的平衡树都很重要而且有效.把数据结构画出来,在你的脑袋瓜里面就能想象出来,总之,你需要做的就是,直观的去了解这些数据结构.
那么第二件事就是学习什么时候用什么样的数据结构和算法,现在对我来说很难。不过可以使我认识到当真正处理到现实问题的时候或许才能掌握某些数据结构,比如哈希表.
接下来就是具体的实施步骤了。
第一,找一二本优秀的数据结构书籍,看完一个数据结构就使用c#语言将它实现,不懂就借助搜索引擎查看其他人优秀的数据结构源码。值得注意的是要重点标记使自己困惑的地方,隔个一段时间,就拿出来再练习练习。
这是我接下来将用45天学习数据结构的知识点顺序:
学习使用顺序表-学习使用单链表-学习使用双向链表-使用循环链表-比较不同算法的算法效率
学习使用堆栈-用顺序栈解决堆栈-学习使用链栈解决堆栈
学习认识队列-学习使用顺序对列-学习使用链队列
学习认识串-学习使用顺序存储解决串
学习认识数组-学习使用特殊矩阵-学习使用稀疏矩阵
学习认识二叉树-学习使用二叉树的存储使用-学习使用二叉树的遍历方法及递归的实现-学习用二叉树解决快速搜素磁盘文件中记录的问题-认识最优二叉树-哈夫曼树
学习认识数-学习认识树的存储-学习数,森林与二叉树的转换-学习解决树和森林的遍历问题-应用数
认识图-学习用邻接矩阵解决图的编程问题-学习邻接表解决图的编程-学习解决图的遍历问题-学习图的最短路劲
认识排序-插入排序-选择排序-交换排序-归并排序-分配排序
线性表查找技术-哈希表查询计划
第二对这些数据结构加以运用,可以在 google 上搜索“某个数据结构 + ACM”的题目-这些题目都是数据结构的运用,甚至有这些数据结构的变形。期间可以学到的数据结构和算法做小软件玩儿,例如压缩软件,五子棋之类的。
这些学习看完后,接着刷《算法导论》,当然这是几个月后的事了。以后再写
注:很多计划都是看了知乎上精华答案里而指定的。哈没事多逛逛知乎,还是会有收获的。