0%

数据结构怎么学

作者: 林少维
链接: https://www.zhihu.com/question/19830721/answer/23418658

学理论+可视化+编程实践

  1. 数据存储的目的是便于数据访问。这个关系就是数据结构
  2. 算法是计算机解题的模型:
    • 输入
    • 输出
    • 顺序执行
    • 跳转
    • 循环
    • 分支
    • 有限步骤
  3. 大脑组织数据的方式 有线,树,图三种逻辑结构,
    计算机存储采用顺序,链式和两者混合的方式,
    前者是概念性,后者是物理实现

线形结构

  • 算法是迭代算法,
  • 注意规模最小的情况下不出错,则算法一般不出错

树形结构

  • 算法是递归算法,将简单情形组合出复杂情形

  • 简单情形不出错,则算法一般不会出错。

图形结构

  • DFS:将图按树形结构来处理,运用递归算法

  • BFS:将图按线形结构来处理,运用迭代算法

必须会下面几个算法

(线形两个)

  • 将两个有序表合并为一个表,
    这个算法的变种很多,可以是链表,顺序表。
    涉及集合运算,归并排序,字符串处理。

  • 将一个顺序表的元素重新划分,左边的较小,右边较大
    涉及快速排序,求字符串的逆串。

(树形若干个)注意:有些可以实现,有些实现不了,拿来思考

  • 前序线索化
    递归实现,栈模拟递归,非栈式迭代实现

  • 中序线索化
    递归实现,栈模拟递归,非栈式迭代实现

  • 后序线索化
    递归实现,栈模拟递归,非栈式迭代实现

(图形)注意:会画表格,写出算法的逐个步骤即可

  • MST: prim,kruskal
  • short path: Dijkstra, Floyd
  • AOV: 拓扑排序的DFS, BFS实现
  • AOE:关键路径