方法一:

思路:在下一个节点不为空的时候如果下一个节点的值是指定的要删除的值就跳过,否则就移动到下一个节点

  1. /**
  2. * Definition for singly-linked list.
  3. * type ListNode struct {
  4. * Val int
  5. * Next *ListNode
  6. * }
  7. */
  8. func removeElements(head *ListNode, val int) *ListNode {
  9. //新建链表节点
  10. dummyNode := &ListNode{}
  11. dummyNode.Next = head
  12. cur := dummyNode
  13. for cur.Next != nil {
  14. if cur.Next.Val == val { //是要删除值的就跳过
  15. cur.Next = cur.Next.Next
  16. } else { //不是要删除的值就移动到该节点
  17. cur = cur.Next
  18. }
  19. }
  20. return dummyNode.Next
  21. }