说实在的,我都研二了,要是数据结构还不过关,就别混了。主要是准备12月份再考一次 PAT (第一次84分🤬),因此把 MOOC 刷一次,搞个 50 块钱代金券。
课程幻灯片PPT/讲义PDF都放在./resources文件夹里了。
2021年12月11日考完了期末考试,98分,就第一道判断题错了。
总的说来有收获,又夯实了一遍基础;本来想考 12 月 18 日的 PAT 来着,现在觉得没必要考了。反而是课程本身让我受益匪浅。
期末考试 98 分,证书:./浙江大学数据结构证书.png
我以前的笔记记得就不错,见:
习题与作业:
代码:
我以前的笔记记得就不错,见:
补充一下:
代码:
- 线性表的定义与操作-顺序表:就是在一个
struct
里存了一个数组,包括其最后一位的索引 - 线性表的定义与操作-链式表:就是在一个
struct
里存了一个数组,包括其最后一位的索引 - 注意:List 是
struct*
,因此要malloc
后再调用其中成员 - 堆栈的定义与操作-顺序存储.c
- 堆栈的定义与操作-链式存储.c
- 队列的定义与操作-顺序存储.c
- 队列的定义与操作-链式存储.c
习题与作业:
以前的笔记:
代码:
习题与作业:
现在的笔记:
代码:
习题与作业:
本节讲堆,可以参考我算法基础课的笔记:https://github.com/PiperLiu/ACMOI_Journey/blob/master/notes/acwings/算法基础课/ybase05.md#堆
补充笔记:
代码:
习题与作业:
讲了矩阵和链表表示图,然后还用 DFS 和 BFS 遍历图。不用记笔记了。习题和作业可以看看。还讲了连通分量。没啥可记的,有些定义去看看ppt吧:6.2 图的遍历.pdf。
代码:
习题与作业:
非常可惜,错了 3 道题, 2 道是因为马虎:
讲了经典例题:树的遍历、完全二叉搜索树、哈夫曼编码、单源最短路和多源最短路(Floyd
算法)。
补充笔记:
代码:
习题与作业:
- ./homeworks/ds.7.chap.md
- 第二道编程题有一个测试点我说什么也过不了...是一个小遗憾,迄今为止所有题目我用自己的方法和习惯都能全过,唯独这道题
知识点有:最小生成树(Prim
算法与Kruskal
算法)以及拓扑排序。 y 总的算法基础课都有,我也不详细记录了。但是,在算法题中真的很少见。
代码:
习题与作业:
各自排序,我这里简单总结下精华:冒泡和插排每次操作只能消除一个逆序对,因此时间复杂度是
补充笔记:
代码:
习题与作业:
这节课讲快排、表排序、基数排序。以及排序方式的比较。
我有点好奇陈老师会在什么视角下比较:
- 最差情况的时间复杂度肯定不是她考虑的,因为实际应用中并没有那么多最差情况
- 比如插排适于已经差不多有排序的数据
补充笔记:
代码:
习题与作业:
注意散列表中删除,一般用懒惰删除,即不是真正删除,而是标记一下那个位置,下次插入用到的话,可以直接覆盖。
补充笔记:
代码:
习题与作业:
讲了之前的三道例题以及 KMP 。注意这里 KMP next
字符串下标从 0 开始,与一般的做法不同(下标从 1 开始)。
代码:
- [KMP 代码](./codes/12.4 KMP 代码.c)
习题与作业: