self.next = None如何获得l1的下一个值?

时间:2017-07-19 22:43:23

标签: python algorithm python-3.x mergesort nonetype

我正在处理Leetcode上的一个问题(问题21)。它要求我合并两个已排序的链接列表并将其作为新列表返回,它会提供这样的预先输入的代码。

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def mergeTwoLists(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """

我在正式解决合并问题之前做了一些测试。我输入l1如下:

l1 = [1,2,3,4,5]

我将代码更改为:

class Solution(object):
    def mergeTwoLists(self, l1, l2):
        print(l1.val)
        print(l1.next.val)

输出显示:

1
2

困惑我的部分是函数self.next如何获取我输入的ListNode的下一个值。根据我的理解,self.next设置为None,因此l1.next应该等于None,而None.val应该出错。有人可以帮我这个吗?

这是两张显示代码,输入和输出的图片。

enter image description here

此外,这是我遇到问题的链接。 https://leetcode.com/problems/merge-two-sorted-lists/#/description

1 个答案:

答案 0 :(得分:2)

None是新nextListNode的默认值。其他ListNode可以将其他值分配给next。构建ListNodes的正确链接列表涉及为每个节点的链接参数分配对下一个节点的引用:

l1 = ListNode(1)
l2 = ListNode(2)
l3 = ListNode(3)
l4 = ListNode(4)
l5 = ListNode(5)

l1.next = l2
l2.next = l3
l3.next = l4
l4.next = l5