203. 移除链表元素

image.png

需要设置一个前置节点 这个时候可以需要设置一个哨兵节点dummyHead 可以在删除的第一个节点的时候非常方便处理

  1. package main
  2. import "fmt"
  3. type ListNode struct {
  4. Val int
  5. Next *ListNode
  6. }
  7. func removeElements(head *ListNode, val int) *ListNode {
  8. dummyHead := &ListNode{
  9. Val: -1,
  10. Next: head,
  11. }
  12. preNode := dummyHead
  13. for head != nil {
  14. if head.Val == val {
  15. next := head.Next
  16. preNode.Next = next
  17. head = next
  18. } else {
  19. preNode = head
  20. head = head.Next
  21. }
  22. }
  23. return dummyHead.Next
  24. }
  25. func main() {
  26. one := &ListNode{Val: 1}
  27. two := ListNode{Val: 2}
  28. one.Next = &two
  29. three := ListNode{Val: 6}
  30. two.Next = &three
  31. four := ListNode{Val: 3}
  32. three.Next = &four
  33. five := ListNode{Val: 4}
  34. four.Next = &five
  35. six := ListNode{Val: 5}
  36. five.Next = &six
  37. seven := ListNode{Val: 6}
  38. six.Next = &seven
  39. removeElements(one, 6)
  40. curr := one
  41. for curr != nil {
  42. fmt.Println(curr.Val)
  43. curr = curr.Next
  44. }
  45. }

image.png