单链表结构
节点分为一个数据域和一个指针域。
单链表的头指针与头结点
具体如下图所示:
头指针:
- 在线性表的链式存储结构中,头指针是指链表指向第一个结点的指针,若链表有头结点,则头指针就是指向链表头结点的指针。
- 头指针具有标识作用,故常用头指针冠以链表的名字。
- 无论链表是否为空,头指针均不为空。头指针是链表的必要元素。
头结点:
- 头结点是为了操作的统一与方便而设立的,放在第一个元素结点之前,其数据域一般无意义(当然有些情况下也可存放链表的长度、用做监视哨等等)。
- 有了头结点后,对在第一个元素结点前插入结点和删除第一个结点,其操作与对其它结点的操作统一了。
- 首元结点也就是第一个元素的结点,它是头结点后边的第一个结点。
- 头结点不是链表所必需的。
单链表操作:
1. 创建
2. 插入
3. 删除
4. 测长
5. 输出
6. 逆置
7. 排序
1.单链表创建
直接对单表元素采用 while循环机制 malloc 函数 赋值,只要不出现约定的元素出现,单链表即可不断添加元素;
返回头指针;
2.单链表插入
malloc 函数创建动态内存空间;
判断链表是否为空并找到与待插入元素的数值为相邻大小的位置;
判断位置在头、间、尾,进行各项应插入操作;返回头指针;
返回头指针;
返回头指针;
3.单链表删除
遍历链表,找到待删除元素的位置;
根据元素所在头、间、尾,对指针进行相应操作;
free函数 删除指针 对应动态内存空间;
4.测长与输出
while 循环机制对链表遍历;
对每个元素输出 \ 每读一个元素即常数加 1 ;
完成输出 \ 输出常量;
返回头指针;
返回头指针;
5.单链表逆置
判断链表是否为空或者元素为1个;
声明三个元素结点指针;
对头指针与头指针的后一结点赋指针;
采用 while 循环机制,第三元素赋值,三个指针平移操作,逆置指针方向;
头指针置于链表尾部;
原头指针置空;
返回头指针;
6.单链表排序
遍历链表;
根据双层 for 循环,大数沉底,调整指针;
返回头指针;