我有以下反转链表的代码(我知道它是正确的)。我对链表比较陌生,我对代码本身有一些问题:
def reverseList(self, head: ListNode) -> ListNode:
if head == None:
return None
if head.next == None:
return head
prev = head
curr = head
nex = head.next
while nex:
curr = nex
nex = nex.next
curr.next = prev
prev = curr
head.next = None
return curr
我理解与两个“if”语句相关的代码。问题:
(另外,什么是“指针”——这是链表中连接一个节点到另一个节点的东西吗?-我理解链表,它只是我试图弄清楚的代码中的引用)
在while语句中:
while循环中的代码我很难理解,如果有人能解释一两行,那将非常有帮助,因为我认为大多数人都有相同的含义。非常感谢
Python并没有像C这样的语言那样将“指针”的概念与“值”区分开来。可以准确地说,Python中的每个变量都是“指针”,因为Python中的变量总是对对象的引用;重新分配变量不会改变底层对象(相反,它会重新分配它以指向其他对象)。
'prev'和'curr'-我说这些是指针对吗?
根据上述免责声明——是的。
在head.next中,head.next指的是head之后的节点,还是从head指向下一个节点的指针?
两者。说head.next
"指的是"head之后的节点,相当于说它"指向"下一个节点。这是同一个概念。
(另外,什么是“指针”——这是链表中连接一个节点到另一个节点的东西吗?-我理解链表,它只是我试图弄清楚的代码中的引用)
指针是“指向”的东西,与“引用”或“连接”是一回事。
我们做'curr=nix'来将curr指针从head移动到nix(=head.next)-我读得对吗?
是的;当您使用赋值操作(=
)重新赋值变量时,该变量现在指向您刚刚将其赋值给的对象。
'nix=nex.next'这是做什么的,我们是将nix分配给nex.next,还是建立从头部后的节点到该节点后的节点的连接/地址?
变量ney
将被重新分配,以指向nex.next
指向的任何内容。在链表的上下文中,这意味着您将ney
指针在列表中向前移动一个位置。