python 链表问题
class Node(object): #节点类
def __init__(self,data):
self.data = data
self.pnext = None
class linklist(object): #单链表
def __init__(self):
self.head = None
self.length = 0
def updata(self,value,index):
newnode = Node(value) #将值改为node类型
if type(index) is int:
if index > self.length -1:
pass
else:
if index == 0:
newnode.pnext = self.head.pnext
self.head = newnode
else: #遍历链表
node = self.head
while index - 1 : #遍历到索引的位置
node = node.pnext
index = index - 1
newnode.pnext = node.pnext.pnext #将新节点的pnext指向索引位置的pnext
node.pnext = newnode #????
这个是我在网上搜索到的算法,有个地方不是很明白。
。
都没有修改self.head的值 为什么就直接能修改链表了呢?
node不只是self.head的拷贝吗?
class A:
def __init__(self,name):
self.name = name
def sayname(self):
ww = self.name
ww = '1'
print(self.name)
print(ww)
a = A('qq') #qq
a.sayname() #1
在这段代码里面我修改了ww也没有让self.name改变呀?
为什么上面修改node就能让self.head改变了呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
链表替换 node->newnode->node.pnext.pnext 把node.pnext 替换为newnode
原来是 ...->node->node.pnext->node.pnext.pnext->... 以下前后省略
第一句话 newnode.pnext = node.pnext.pnext
变成 ...->node->node.pnext->node.pnext.pnext->...和 newnode.pnext->node.pnext.pnext->...
第二句话 node.pnext = newnode
变成 ...->node->newnode->node.pnext.pnext->... 和 node.pnext->node.pnext.pnext->...
所以self.head是前面的链表,后面的链表被断开了,完成了替换的目的