题目
难度:★☆☆☆☆
类型:链表
删除链表中等于给定值 val 的所有节点。
示例
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
解答
移除链表中的指定元素,需要两个临时变量:
伪头结点pre_head:将输入的头结点挂在该结点上,作为整个链表的前序结点,用于处理头结点即为要删去的情况;
当前结点cur:用于迭代遍历和删除结点元素。
class Solution(object):
def removeElements(self, head, val):
"""
:type head: ListNode
:type val: int
:rtype: ListNode
"""
cur = pre_head = ListNode(0) # 定义一个辅助结点
pre_head.next = head # 把输入链表挂在该结点上
while cur.next: # 当前结点不是最后一个结点时
if cur.next.val == val: # 如果下一个结点的值是要删除的
cur.next = cur.next.next # 删除下一个结点
else: # 否则
cur = cur.next # 当前结点后移
return pre_head.next # 返回处理后的链表
为了更好的观察效果,读者可以参考和使用【链表基础】
中的创建链表和打印链表函数。
如有疑问或建议,欢迎评论区留言~