203. 移除链表元素
需要设置一个前置节点 这个时候可以需要设置一个哨兵节点dummyHead 可以在删除的第一个节点的时候非常方便处理
package main
import "fmt"
type ListNode struct {
Val int
Next *ListNode
}
func removeElements(head *ListNode, val int) *ListNode {
dummyHead := &ListNode{
Val: -1,
Next: head,
}
preNode := dummyHead
for head != nil {
if head.Val == val {
next := head.Next
preNode.Next = next
head = next
} else {
preNode = head
head = head.Next
}
}
return dummyHead.Next
}
func main() {
one := &ListNode{Val: 1}
two := ListNode{Val: 2}
one.Next = &two
three := ListNode{Val: 6}
two.Next = &three
four := ListNode{Val: 3}
three.Next = &four
five := ListNode{Val: 4}
four.Next = &five
six := ListNode{Val: 5}
five.Next = &six
seven := ListNode{Val: 6}
six.Next = &seven
removeElements(one, 6)
curr := one
for curr != nil {
fmt.Println(curr.Val)
curr = curr.Next
}
}