链接列表中的对象变量反向代码

时间:2017-08-20 22:17:55

标签: variables object

嗨,这是一个链接列表反向代码。任何人都可以帮助我理解r = Solution()。reverseList( n1 )和r = Solution()。reverseList( ListNode(1))之间的差异。

我想知道为什么输出分别是[1]和[3,2,1]以及将ListNode对象分配给变量的目的是什么。

class Solution(object):
def reverseList(self, head):
    """
    :type head: ListNode
    :rtype: ListNode
    """
    #if not head:
    #   return None
    prev = head
    curr = prev.next
    while curr:
        next =curr.next
        curr.next = prev
        prev = curr
        curr = next
    head.next = None
    return prev




class ListNode(object):
    def __init__(self,x):
        self.val = x
        self.next = None
    def to_list(self):
        return[self.val] + self.next.to_list() if self.next else [self.val]

if __name__ == "__main__":
    n1 = ListNode(1)
    n2 = ListNode(2)
    n3 = ListNode(3)
    n1.next = n2
    n2.next = n3
    r = Solution().reverseList(n1)
    print r.to_list()
    #assert r.to_list() == [3,2,1]

1 个答案:

答案 0 :(得分:0)

我现在明白了。

ListNode(1)没有“next”设置,因此它将永远返回1作为它的列表,而n1以相同的方式(仅为1的节点)启动,但“next”属性设置为2的节点其“next”设置为3的节点,因此n1携带所有这些信息,而ListNode(1)则没有。

欢迎任何评论。