class Solution:
def reverseList(self, head: ListNode) -> ListNode:
pre=head
cur= None
while head:
pre.next=cur
cur=pre
pre=head.next
head=head.next
return cur
我原本以为head本身就是一个链表,不需要创新新的链表t来保存原来pre.next的指针,但是在调试的过程中发现改变pre.next的值时,head也会跟着改变,这是为什么?
答案应为:
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
pre=head
cur= None
while head:
t=pre.next
pre.next=cur
cur=pre
pre=t
return cur
因为这是同一个链表,你动了 pre.next 其实就是动了 head.next
我以为给pre链表单独分配了一个新的内存空间,所以改变pre不会影响head。但是我看了下python存储数据时,赋值语句其实只是对同一个对象贴了个新标签pre,并没有分配新地址。所有改变pre之后head也改变了。请问pre和head指向同一个链表的根本原因这样理解对吗?请问是不是C++也是指向同一个链表啊?
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632