一:为什么要删除节点
(1)有时候链表中节点的数据不想要了,就要删除这个节点
二:删除节点的两个步骤
(1)第一步:找到这个节点
(2)第二步:删除这个节点
三:如何找到待删除的节点
(1)通过遍历来查找节点1.从头指针+头节点开始,顺着链表依次将各个节点拿出来,按照一定的方法对比,找到要删除的那个节点
四:如何删除一个节点
1:待删除的节点不是尾节点的情况
(1)第一步:把待删除的节点的前一个节点的pnext指针指向待删除节点的下一个节点的首地址(这样就把要删除的那个节点从链表中摘出来了)
(2)第二步:把这个摘出来的节点free掉
2:待删除的节点是尾节点的情况
(1)第一步:把待删除的尾节点前一个节点的pnext指针指向null(相当于原来尾节点的前一个节点变成了尾节点)
(2)第二步将之前的尾节点free掉
函数实现代码:
/*****************************************
函数名:delete
返回值:0 或 -1 返回0表示删除成功 -1 表示删除失败
参数:ph:单链表的头指针 data:需要删除的节点的数据区存放的数据(通过数据找到对应的节点来删除这个节点)
作用:通过头指针访问单链表,对链表的各个节点进行遍历,当找到某个节点的有效数据区的数据是指定的那个时,删除那个对应的节点
*****************************************/
int delete(struct node *ph,int data)
{
struct node *p &