嗨,这是一个链接列表反向代码。任何人都可以帮助我理解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]
答案 0 :(得分:0)
我现在明白了。
ListNode(1)没有“next”设置,因此它将永远返回1作为它的列表,而n1以相同的方式(仅为1的节点)启动,但“next”属性设置为2的节点其“next”设置为3的节点,因此n1携带所有这些信息,而ListNode(1)则没有。
欢迎任何评论。