1.数据结构大致可以分为,线性结构和非线性结构
线性结构有 线性表,栈,队列,串等
非线性结构有 树,二叉树,图等
2.链表:是一种线性表,用指针相连的结点
3.存储方式:线性存储,链式存储
4.链式存储:存储是不连续的,每一个元素除了存储自身的信息外,还需要存储其后续元素的信息
5.链表每个结点由数据域和指针域组成,数据域用来保存自己的信息,指针域用来存储下一个结点的地址
6.单链表:结构体里面嵌套自己的结构体指针
创建一个单链表
1.初始化------创建链表头(init)
①定义一个指针变量(结构体类型)
②动态开空间(堆)malloc()
③初始化为空
④保存数据(链表的头不存放数据)
⑤函数返回值是链表头
2.插入函数(add)
①定义一个指针变量(结构体类型)
②动态开空间(堆)malloc()
③初始化为空
④保存数据memcpy,拷贝数据
⑤初始化指针域为NULL
⑥定义一个临时指针,初始化指向heap,链表头
用while循环开始找,如果找到节点指针域是NULL的,说明到尾巴了,就连接新的节点
如果不是NULL,继续往后偏移
通用链表
通用链表的增删改查
1.和普通链表的增删改查类似,只是定义的结构体是通用的,将结构体的数据域改成了可以被任何数据类型赋值的void *类型的指针