203. 移除链表中的元素(Python)

题目

难度:★☆☆☆☆
类型:链表

删除链表中等于给定值 val 的所有节点。

示例

输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5

解答

移除链表中的指定元素,需要两个临时变量:

  1. 伪头结点pre_head:将输入的头结点挂在该结点上,作为整个链表的前序结点,用于处理头结点即为要删去的情况;

  2. 当前结点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                    # 返回处理后的链表

为了更好的观察效果,读者可以参考和使用【链表基础】
中的创建链表和打印链表函数。

如有疑问或建议,欢迎评论区留言~

你可能感兴趣的:(203. 移除链表中的元素(Python))