C链表(无头节点、有头节点),及链表相关操作

一、无头节点链表即操作

1.定义节点

定义节点

其中stu为(struct student)类型,pstu为(struct student*)类型。

2.头插法构造

头插初始化

在这里进行一下参数的注释,后面就不再赘述:

因为前面定义时,其中stu为(struct student)类型,pstu为(struct student*)类型

故pstu *pphead和pstu *pptail二级结构体指针类型(struct student**),因为是无头节点链表,所以在增删操作时,会有更改头、尾指针的需求,而要想在子函数中修改一级指针,就必须要用二级指针来进行接收,及操作。

3.尾插法构造

尾插初始化

4.有序插入构造

有序插入初始化

5.删除节点

删除节点

6.修改节点

这里给结构体新添加一个成员方便修改测试。根据num,修改score。

因为修改节点不需要修改头、尾指针,所以传递一级指针就可以了。

修改节点数据


7.遍历打印

8.测试

二、有头节点链表即操作

1.定义节点

定义节点

注意:只有头插法和尾插法创建链表时要更改头节点指针,需要传递二级指针,其余情况只用一级指针即可。

2.头插法创建链表

头插构造

3.尾插法创建链表

尾插构造

4.按值查找节点

按值查找

5.按序号查找节点(序号从1开始)

按序号查找

6.插入节点(按传入序号),序号从1开始

插入

7.删除节点(按传入序号),序号从1开始

删除

你可能感兴趣的:(C链表(无头节点、有头节点),及链表相关操作)