一、无头节点链表即操作
1.定义节点
![](https://img.haomeiwen.com/i20116762/7876934cf7108650.png)
其中stu为(struct student)类型,pstu为(struct student*)类型。
2.头插法构造
![](https://img.haomeiwen.com/i20116762/f6a173220bb73787.png)
在这里进行一下参数的注释,后面就不再赘述:
因为前面定义时,其中stu为(struct student)类型,pstu为(struct student*)类型
故pstu *pphead和pstu *pptail是二级结构体指针类型(struct student**),因为是无头节点链表,所以在增删操作时,会有更改头、尾指针的需求,而要想在子函数中修改一级指针,就必须要用二级指针来进行接收,及操作。
3.尾插法构造
![](https://img.haomeiwen.com/i20116762/a2ccaf552c4d7ba2.png)
4.有序插入构造
![](https://img.haomeiwen.com/i20116762/3f652ceec6ea23bc.png)
5.删除节点
![](https://img.haomeiwen.com/i20116762/8024d1694f0a48a5.png)
6.修改节点
这里给结构体新添加一个成员方便修改测试。根据num,修改score。
![](https://img.haomeiwen.com/i20116762/6e3841bcdad69b06.png)
因为修改节点不需要修改头、尾指针,所以传递一级指针就可以了。
![](https://img.haomeiwen.com/i20116762/fca6b4b319035c5c.png)
7.遍历打印
![](https://img.haomeiwen.com/i20116762/0017698044d788e0.png)
8.测试
![](https://img.haomeiwen.com/i20116762/cf2d8b70f8a765e3.png)
二、有头节点链表即操作
1.定义节点
![](https://img.haomeiwen.com/i20116762/3ba126f81a1db5d8.png)
注意:只有头插法和尾插法创建链表时要更改头节点指针,需要传递二级指针,其余情况只用一级指针即可。
2.头插法创建链表
![](https://img.haomeiwen.com/i20116762/c6701a1bb878be8f.png)
3.尾插法创建链表
![](https://img.haomeiwen.com/i20116762/728a47c65d4e34c2.png)
4.按值查找节点
![](https://img.haomeiwen.com/i20116762/9fb496a1f12d6edc.png)
5.按序号查找节点(序号从1开始)
![](https://img.haomeiwen.com/i20116762/e7910c0bbf5e122d.png)
6.插入节点(按传入序号),序号从1开始
![](https://img.haomeiwen.com/i20116762/944d8a2c8d5d505e.png)
7.删除节点(按传入序号),序号从1开始
![](https://img.haomeiwen.com/i20116762/50c5f3b44fbbc195.png)
网友评论