本篇只适合考408的同学,请自主命题的同学自觉右上角×掉
因为王道书为了照顾自主命题的同学,所以很多算法也给出了代码实现,实际上对于考408的同学,很多代码是不需要掌握的,毕竟408的代码题没有像自主命题有些挖的那么深,那么难。
对于顺序表,一般情况下不需要使用结构体包起来,直接使用数组就行
传参时只需传一个数组名,一个数组中元素个数就行了
void f(int A[],int n){
}
增删改查,此处查找指的是顺序查找
单链表的话对应的结构体就需要掌握了
头插法(可以用于链表逆置),尾插法,单链表的遍历,插入结点,删除结点。
今年大概率考链表,对于链表大家要引起重视,最好双链表也掌握下,也是有概率考的。
学有余力的最好也掌握下
学有余力的最好也掌握下
如果考双链表、循环链表、静态链表那么不会考大家链表的建立,大家主要是注意对链表的遍历、插入结点、删除结点这些操作
实现不要求掌握,408历史上只在2014年使用层序遍历的时候用到了队列,其实那题不需要层序遍历也能做。
如果遇到需要使用栈和队列的情况的话,只需使用标准库就行了(比如C++中的STL),一般来讲是用不到的。
只有在题目要求你实现栈和队列的情况,你才需要手写实现,这样的情况一般不考
这里所有的代码都不要求掌握
顺序存储结构+链式存储结构
先序遍历P139
中序遍历P140
后序遍历P140
非递归实现P141(不做要求)
层次遍历P142 (不做要求,三种遍历方式足够了)
代码全部不做要求
并查集不要求(此处有争议)
21年图刚考过,最近再考概率不大
最多最多就掌握深搜(dfs)就行了,其实我们树那边遍历不论是先序还是中序还是后序其实都是一个深搜的过程。
代码全部不做要求
根据自己情况选择性掌握,考普通的二分概率不大,20年考的那题是变形的二分(需要类似于C++中的lower_bound,upper_bound那样的操作),但是那题用二分也不是最优解。
代码不要求
408算法题排序模板
去年我在代码库中把我以前写的一些排序算法翻了出来,今年后期我还会重新做一下
重点大家只需掌握快速排序就行了
不会写的话也把那段代码背下来,排序没啥好变化的,就一个排序能变出啥呢?
用快排比用冒泡排序、选择排序那些要多2-3分。
快排的时间复杂度是
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn),空间复杂度是
O
(
l
o
g
n
)
O(logn)
O(logn)