题目描述:
删除链表中等于给定值 val 的所有节点。
知识点:
链表操作检查边界条件:
- 链表为空
- 链表只包含一个节点
- 链表只包含两个节点
- 处理头节点和尾节点是否有问题
思路和代码:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def removeElements(self, head: ListNode, val: int) -> ListNode:
#边界条件1:空链表
if head == None:
return
#边界条件2:单节点链表
if head.next == None:
if head.val == val:
return
else:
return head
# 处理头节点
while head and head.val == val:
head = head.next
#移除符合条件的首节点后为空,则返回空
if head == None:
return
cur = head
# 若当前链表只有一个节点则直接返回head
while cur and cur.next:
if cur.next.val == val:
cur.next = cur.next.next
else:
cur = cur.next
return head