先创建好SList.c、Test.c两个源文件和SList.h一个头文件。
SList.c和Test.c一样
SList.h 文件
在SList.h加上
1.单链表打印
SList.h
SList.c
思路:
逻辑图(之后经常用到):
物理图:
为了方便运行Test.c中的运行还要在SList.h写一个造节点的函数。
2.造节点的函数
SList.h
SList.c
Test.c
因为要把一个个节点给链接起来(先写头插)
思路:
物理图才是真正的内核
因为要头插Test.c要改成
运行结果:
如果改为尾插会是正序的。
如果想在链表中进行尾插
3.单链表的尾插
SList.h
思路:
这里有个经典错误值得提一下
逻辑图不好理解,看看物理图
SList.c
这两个代码天差地别
Test.c
运行结果:
我们已经折腾出来了一个链表往链表里边加数据
有没有一种可能性一开始没有节点链表该怎么走?
假设SList.c
Test.c
运行结果:
为什么呢?
这是一个大坑大伙都要跳一遍的
原因也很好理解
形参改变不会影响实参
进入前
交换后
所以我们要进行修改
Slist.h进行修改
SList.c进行修改
Test.c进行修改
运行结果:
本质理解
4.单链表的头插
思路:
SList.h
SList.c
Test.c
运行结果:
5. 单链表的尾删
SList.h
思路:
*pphead就是plist
SList.c
这里有个经典错误
正确思路是
Test.c
运行结果
6. 单链表头删
SList.h
思路:
SList.c
Test.c
运行结果:
7. 单链表查找
SList.h
SList.c
Test.c
运行结果
8. 在pos之前插入x
SList.h
SList.c
Test.c
运行结果
9. 单链表在pos位置之后插入x
SList.h
SList.c
Test.c
运行结果
10. 删除pos位置
SList.h
SList.c
Test.c
运行结果
11. 单链表删除pos位置之后的值
SList.h
SList.c
Test.c
运行结果
12. 单链表的销毁
SList.h
SList.c
Test.c
运行结果