代码随想录复习 203 移除链表元素
代码如下
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func removeElements(head *ListNode, val int) *ListNode {
prehead := &ListNode{} //设置一个虚拟头结点
prehead.Next = head //虚拟头结点指向头结点
cur := prehead //设置遍历指针
for cur != nil && cur.Next != nil { //遍历的终止条件,如果当前节点为空,或者当前节点为尾结点
if cur.Next.Val == val { //如果下一个节点的值等于目标值,则需要删除下一个节点,下一个节点则为删除的目标节点。
cur.Next = cur.Next.Next //所以需要将目标节点指向的下一个节点的指针赋给当前指针指向目标节点的指针
}else {
cur = cur.Next //如果不是目标值,节点向后移动
}
}
newhead := prehead.Next
return newhead
}