提问者:小点点

链表中的点是否代表节点或从一个节点到另一个节点的指针?


我有以下反转链表的代码(我知道它是正确的)。我对链表比较陌生,我对代码本身有一些问题:

 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”语句相关的代码。问题:

  1. 'prev'和'curr'-我说这些是指针对吗?
  2. 在head.next中,head.next指的是head后面的节点,还是从head指向下一个节点的指针?

(另外,什么是“指针”——这是链表中连接一个节点到另一个节点的东西吗?-我理解链表,它只是我试图弄清楚的代码中的引用)

在while语句中:

while循环中的代码我很难理解,如果有人能解释一两行,那将非常有帮助,因为我认为大多数人都有相同的含义。非常感谢


共1个答案

匿名用户

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指针在列表中向前移动一个位置。