python 反转链表并输出_python链表反转引发的问题

先附上代码

#节点类

class Node(object):

def __init__(self,data,nNext = None):

self.data = data

self.next = nNext

#链表类

class Chain(object):

def __init__(self):

self.head = None

self.length = 0

#只加一个节点

def append(self,dataOrNode):

#item得是一个Node,加的如果只是一个数,得变成Node

if isinstance(dataOrNode,Node):

item = dataOrNode

else:

item = Node(dataOrNode)

#头为空

if not self.head:

self.head = item

self.length += 1

else:

node = self.head

#找到最后一个点把它连起来

while node.next:

node = node.next

#如果item是一个链子如何解决

node.next = item

self.length += 1

#删除一个节点

def delete(self,index):

if index<0 or index>=self.length:

return None

current = self.head

pre = None

temp_index = 0

while current.next:

if temp_index == index:

if not pre:

self.head = current.next

else:

pre.next = current.next

self.length -= 1

return

pre = current

current = current.next

temp_index += 1

#链表反转

def reverse(self,head):

cur = head

pre = None

while cur is not None:

#print(head)

tmp = cur.next

cur.next = pre

pre = cur

#print(pre.data)

cur = tmp

head = pre

问题:链表添加3个元素,然后反转

mychain = Chain()

mychain.append(1)

mychain.append(2)

mychain.append(3)

mychain.reverse(mychain.head)

依次输出链表的每个值

node2 = mychain.head

while node2 is not None:

print(node2.data)

node2 = node2.next

只输出一个1。

pre反转正确,之前的head重新赋值了现在的pre(之前head指向的地址变成了现在pre的地址),我觉得很对,以前mychain.head是123这个地址,现在的mychain.head是321这个地址,那应该是能正常输出3-2-1,可是结果就是只有1,不明白

1afe0c2056b0f81e731416c7f6a9a1b5.png

辅助代码:

head = {'a':1,'b':2}

def change(head):

head['k'] = 2

change(head)

print(head)

结果:{'a': 1, 'b': 2, 'k': 2},因为是引用传递,head作为参数传入change函数,出来,内容改变,很对,但是传reverse函数,没有预想的效果,不明白??

题目描述

题目来源及自己的思路

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值