2022年 11月 9日

Python实现”删除链表中的节点(Remove Linked List Elements)”的一种方法

删除整数链表中值为val的节点

Example:

  1. Input: 1->2->6->3->4->5->6, val = 6
  2. Output: 1->2->3->4->5

1:简单判断节点值与val是否相等,并对判断结果执行对应的操作

  1. def removeElements(self, head, val):
  2. """
  3. :type head: ListNode
  4. :type val: int
  5. :rtype: ListNode
  6. """
  7. while head is not None and head.val==val: #保证链表第一个节点的值不等于val
  8. head=head.next
  9. if not head: #判断链表是否为空
  10. return None
  11. headNode = head #头节点
  12. while head.next is not None:
  13. if head.next.val==val:
  14. head.next = head.next.next
  15. else:
  16. head=head.next
  17. return headNode

另一种写法(参考他人代码)

  1. def removeElements(self, head, val):
  2. """
  3. :type head: ListNode
  4. :type val: int
  5. :rtype: ListNode
  6. """
  7. if not head:
  8. return None
  9. headNode = ListNode(1) #头节点
  10. headNode.next = head
  11. preNode = headNode #当前节点的上一个节点
  12. cur = headNode.next #当前节点
  13. while cur is not None:
  14. if cur.val==val:
  15. preNode.next = cur.next
  16. cur = preNode.next
  17. else:
  18. preNode = preNode.next
  19. cur = cur.next
  20. return headNode.next

算法题来自:https://leetcode-cn.com/problems/remove-linked-list-elements/description/