添加节点详见上一篇blog:
《c语言 运用函数实现单向链表的创建,添加节点和插入节点(头插入,中间插入,尾插入)》
删除节点
- 定义一个返回类型为空的函数,参数包括:头结点二级指针,尾节点二级指针,删除节点所在位置)
- 定义一个结构体类型的指针作为删除节点标记;
再定义一个结构体类型的指针p(其作用为:代替头指针遍历链表) - 头删除:如果头指针的位置与要删除节点位置相同(if判断)
将删除标记指向头指针
头指针指向头指针的下一个
释放删除标记所在节点的空间
使用完后,将删除标记再次赋空
return; - 中间删除:将p指向头指针的地址
如果. p的下一个不为空(while循环)
判断:p的下一个的位置与删除节点所在的位置是否相同
如果相同,p的下一个指向删除标记
p的下一个指向p下一个的下一个
释放删除标记所在节点的空间
使用完后,将删除标记再次赋空
此时编写 尾删除:
{
如果p的下一个为空 那么删除标记所指向的是尾节点
p指向尾节点
}
return;
注意:while循环结束之前,记得p地址后移
详细代码如下:(确保