删除元素时,要先找到该元素的前一个元素。
1、删除元素有两种思维方式:(我们以没有头结点的单链表为例)
b为要删除的结点
a为b的前驱结点
c为b的后继结点
当前指针指在a上。
1)思路一:首先保存住要删除结点的next
//删除b的话,需要先保存住b的next(a->next->next)
temp = a->next->next;
//释放掉b
free(a->next);
//a的next指向c
a->next=temp;
2)思路二:将要删除的结点赋给一个新的变量temp,free(temp);
//将b赋值给新的变量
temp = a->next;
//前驱a,指向后继
a->next = temp->next;
//释放掉temp
free(temp);
总结:
思路一是保存要删结点后边的结点(保小);
思路二是保存要删掉的结点(保大)。