C语言数据结构与算法之单链表
基本概念
链表的每一个结点中只包含一个指针域
优点 : 储存空间利用高效
举例来说:
与之相反的是多链表
读取数据元素
获取第i个结点的数据元素
- 声明一个结点指针p指向链表的第一个结点a1,初始化j从1开始
- 当j < i 时,遍历链表,让p的指针向后移动,不断指向下一个结点,j 累加 1
- 当链表末尾 p 为空时,则说明第 i 个元素不存在;否则查找成功,返回结点 p 的数据
1.定义数据元素
2.定义顺序表结构
3.定义链表的结点(包括数据域和指针域)
4.设置头结点
我们在定义链表时,习惯性的会定义头结点,以便统一链表结点的插入和删除操作
如果链表有头结点,next就指向头结点,没有就指向第一个结点
链表的长度初始值为0
插入数据元素
在第i个结点后插入数据元素
- 创建一个空节点,分配内存空间,设置数据元素
- 获取第i个结点,设置新结点的后继结点为该结点的后继结点
- 设置第i个结点的后继结点为该结点
1.创建空节点并为数据域赋值
2.通过循环找到要插入的结点
3.将结点插入并对接前面的结点
初始化链表
打印链表
顺序表查空
顺序表的删除
删除第i个结点及其数据元素
- 获取第i个结点,若该结点不是第一个结点,则获取第i - 1个结点
- 将第i -1个结点的后缀结点设为第i个结点的后缀结点
- 删除第i个结点,释放内存空间,记录并返回删除数据元素的值
情况1:当删除的是第一个元素
情况2:除第一个结点外
- 找到要删除的结点和他的前缀结点
- 要删除结点的next 赋值给前缀结点
- 释放要删除的结点
完整代码
删除单链表整表
- 声明结点p 和 q
- 将第一个结点赋值给p
- 循环将下一个结点赋值给q,释放p,将q赋值给p
单链表VS顺序表
以上就是C语言数据结构与算法之单链表的详细内容,更多关于C语言单链表的资料请关注编程学习网其它相关文章!