给你一个链表的头节点 head
和一个整数 val
,请你删除链表中所有满足 Node.val == val
的节点,并返回 新的头节点 。
普通的链表操作是我比较熟悉的一个点,所以引入了两个指针,但看官方思想,可以不引入多个指针,直接一个变量即可以,可以用next表示实现
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func removeElements(head *ListNode, val int) *ListNode {
if head == nil{
return nil
}
newHead := &ListNode{
0,
nil,
}
newHead.Next = head
p := newHead
t := head
for t != nil{
if t.Val == val{
p.Next = t.Next
t = t.Next
}else{
p = p.Next
t = t.Next
}
}
return newHead.Next
}