计划赶不上变化,还是辜负了之前自己的读书计划
多半还是因为懒,哈哈。

终于完成了《大话数据结构》这本书的阅读,上一次完成整本专业书的阅读要追溯到两年前了。开始读一本书可能是因为纯粹的好奇,后来就变成了需要坚持的工作,随着内容的加深,逐渐变成像是攀爬一座山峰,越快到山顶越难坚持。

因为没有看过其他数据结构的书,所以无从比较。单从感觉上来说,书中内容已经尽量做到简单易懂,描述语言尽量轻松,偶尔的一些插科打诨作为“药引”令人舒服。内容覆盖的方面应该算全的。我是在视频网站搜索数据结构方面的视频,评论里有人推荐的这边书。看来本书经受住了时间和市场的检验。

书中除有数据结构的知识外,还有作者的一些小的个人特色。比如告诉大家要突破思维中的墙,要有所追求,要多思考。非鸡汤,很诚恳。这些都是作者智慧和人格魅力的体现吧。

最后感谢作者。


阅读本书的收获:

  1. 数据结构和算法的“亲密性”。二者就应该放在一起讨论,缺一不可。

  2. 数据结构是什么?即数据的存储结构和数据的逻辑结构,进一步来说,就是数据物理存放方式和数据之间的逻辑先后顺序。

  3. 一本书如果在每章的结尾做进行一些总结,并配一些简单的表格进行梳理,对读者把握整体脉络来说就再好不过了。本书就是。

  4. 数据的存储、读取、插入、删除、排序、查找等操作相关的应用条件和规模的不同,决定了需要有不同的结构来存储数据。为了提升这些行为与数据交互的效率,也就有了优化的结构和优化的算法。

  5. 典型的线性表就是数组。线性表中删除和插入很容易理解和代码实现。

  6. 指针真是C语言中的精髓。它和线性表结合就有了链表。

  7. 在栈、队列、树及图等数据结构的描述、插入、删除和遍历操作中也有指针的参与。不过指针的指向往往让人捉摸不透,真是不一样的花火啊,不懂的人很痛苦,比如我。

  8. 得益于指针,链这种结构可以采用不同的方式遍历,比如循环,比如双向,就像莫比乌斯环一样,辨不清哪里是开头,哪里是结尾。

  9. 我不是针对谁,有指针的语言都完全不想学呢。

  10. 栈是先进后出,队列是先进先出。

  11. 数据结构如果结合实际例子会更好理解,如栈能用浏览器的后退键来举例子,用递归来举例子。其他数据结构的描述似乎做的不太够。

  12. 串:KMP模式匹配算法。

  13. 树这种数据结构中,完全二叉树似乎在后文中出现的频次较高,了解它比其他类型的树重要。

  14. 二叉树的性质很多,窃以为不用太了解。

  15. 二叉树的遍历方式有四种,感觉和茴香豆的茴字有四种写法似乎有某种神秘的联系。这四种遍历方式的代码实现均采用了递归,让我对递归很着迷。

  16. 采用一个指针的数据结构仅能“后知五百年”,采用两个的能前后“各知五百年”,采用多个指针的还能知当今天下事。同理,在二叉树中,采用一个指针的结点,仅能荫蔽“子嗣”;采用两个指针的结点,还能侍奉“双亲”;采用更多个指针的,更能兄弟同袍。俨然一副欣欣向荣、开枝散叶的景象。

  17. 理解树、森林与二叉树的转换需要一些艺术细胞。然而,我没有。

  18. 图是什么?怎么存?最短路径的判断有几种算法?怎么排序?怎么求关键路径?我都不知道。图结合了表、链、二叉树和指针结合的所有难点,我的理解力突然消失了,我找到了我的痛点,并且是很痛的那种。

  19. 图的深度优先和广度优先遍历很有意思,因为它们的实现代码有我着迷的递归。

  20. 看到查找这节的时候,我丢失了之前的所有笔记。

  21. 斐波那契查找的理解让我费了点时间,它是一种基于黄金分割的数据对折查找方法。

  22. 在多路查找树中数据的插入和删除操作,尽管作者说“总的来说它是有规律的,需要你们在上面的这些例子中多去体会后掌握”,但是,我不以为然,我完全在是看作者表演。

  23. 在排序算法中,我独爱冒泡排序和简单选择排序。归并排序中运用了递归。归并排序的非递归实现在一定程度上能够超越代码简洁的递归。

  24. 《算法导论》在书中注释里被频频提到,它很经典,但是它的篇幅让人望而却步。

  25. 快速排序算法中,枢轴的选择方式就是个笑话。

  26. 算法的优劣要从辅助空间占用、算法复杂度、稳定性等方面来做评判。