1.链表
1.1 链表的概念及结构
3.2 链表的分类
实际中链表的结构非常多样,以下情况组合起来就有8种链表结构
1.单向或者双向
2. 带头或者不带头
3. 循环或者非循环
虽然有这么多的链表的结构,但是我们实际中最常用还是两种结构:
无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等等。另外这种结构在笔试面试中出现很多。
带头双向循环链表:结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单了,后面我们代码实现了就知道了。
3.3无头单向非循环链表的实现:
SList.h
Test.c
SList.c
带头双向循环链表的实现:
List.h
test.c
List.c
3.4链表的题目:
力扣https://leetcode-cn.com/problems/remove-linked-list-elements/description/
力扣https://leetcode-cn.com/problems/reverse-linked-list/
思路一:
思路二:
这里的思路二可以衍生出两种写法:
一种是不需要判断是否为空指针的写法,另一种就需要判断。
力扣https://leetcode-cn.com/problems/middle-of-the-linked-list/
力扣https://leetcode-cn.com/problems/merge-two-sorted-lists/description/
方法二:
力扣https://leetcode-cn.com/problems/intersection-of-two-linked-lists/description/
力扣https://leetcode-cn.com/problems/linked-list-cycle/submissions/
力扣https://leetcode-cn.com/problems/linked-list-cycle-ii/description/
力扣https://leetcode-cn.com/problems/copy-list-with-random-pointer/description/
4.顺序表和链表的区别
与程序员相关的CPU缓存知识 | 酷 壳 - CoolShellhttps://coolshell.cn/articles/20793.html