如何从链表python删除第一个节点

时间:2018-12-28 14:42:42

标签: python singly-linked-list

我尝试练习问题partition list

  

给出一个链表和一个值x,对它进行分区,以使所有小于x的节点排在大于或等于x的节点之前。   输入:head = 1-> 4-> 3-> 2-> 5-> 2,x = 3   输出:1-> 2-> 2-> 4-> 3-> 5

我的想法是循环遍历每个节点,并过滤出任何等于或等于x的值,然后构建一个新的LinkedList并从原始列表中删除该节点。一旦完成。将新的LinkedList链接到原始列表的末尾并返回。我的代码在大多数情况下都通过了,但是在

上失败了

输入:head = 2-> 1,x = 2 输出:1-> 2

我认为原因是因为在这种情况下我无法删除第一个节点,但是由于我也有prev.next = cur.next,因此我不确定为什么。知道为什么吗?

class Solution(object):
    def partition(self, head, x):
        """
        :type head: ListNode
        :type x: int
        :rtype: ListNode
        """
        dummy = node = ListNode(0)
        cur, prev = Head, ListNode(0)
        while cur:
            if cur.val >= x:
                node.next = ListNode(cur.val)
                node = node.next
                prev.next = cur.next
                cur = None
            else:
                prev = cur
            cur = cur.next
        if dummy.next:
            prev.next = dummy.next
        return prev.next

0 个答案:

没有答案