观察事例,可以看出输入数据有三种情况,。
1,首先是第一个结点等于val,直接删除结点会影响head的传递,那么我们需要将head调整到值不等于val。这里运用了while,可以设置循环条件,将head->val!=val。(自己思考时想到引用变量,但终究没有这样简便)。
2.当head为空时,直接返回head。
3.当头结点中值不等于val时,经过前面操作的筛选到这里头结点中值肯定不等于val,这里我们设置两个指针slow,fast。
我将slow定义为安全范围,slow所指向的结点中值不等于val;fast定义为去判断下一个结点值是否为val,就是替slow探探路的意思。
指针的赋值可看代码,当fast->val=val时,删除结点,更改slow中储存的地址。删除之后fast到它的下一位,
如果fast->val!=val,可以看做这时fast安全,slow指向fast,fast到它的下一位。
最后返回链表的头指针。
标签:结点,slow,val,--,head,fast,链表,移除 From: https://www.cnblogs.com/coolcooldi/p/17064589.html