C语言实现不带头单链表的增、删、查、改

C语言实现不带头单链表的增、删、查、改
目录
- 什么是链表
- 不带头单链表的增、删、查、改
- 完整代码实现
什么是链表
概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。
实际中链表的结构非常多样,以下情况组合起来就有8种链表结构:
- 单向、双向
- 带头、不带头
- 循环、非循环
这里介绍一种OJ题常考的,不带头节点的单向非循环链表。
无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等等。另外这种结构在笔试面试中出现很多
不带头单链表的增、删、查、改
一、增
增加的方式有两种,在链表的头部增加,和尾部增加,分别为头插和尾插。
1.头插
在链表的最前端插入数据,头插之前先要malloc一个节点。
创建节点
头插
头插很简单,直接用新创建的节点指向原链表的头即可。
注意:这里形参要传二级指针,因为要该变有原指针的位置。可能不太容易理解,举个例子;交换两个数
当进行值传递时,数据内容并不会交换
而进行地址传递,数据的值才会传递
所以想要改变指针的值,需要传递指针的地址才行。形参也需要二级指针接收才行。
2.尾插
二、删
删除的方式有两种,在链表的头部删除,和尾部删除,分别为头删和尾删。
1.头删
2.尾删
三、查
四、改
1.任意位置插入
这里任意位置插入,是插入你所选位置的下一个元素。
2.任意位置删除
这里任意位置删除,是删除你所选位置的下一个元素
完整代码实现
头文件
.c文件,存放函数定义
.c文件,测试文件,主函数文件