首页 > 编程知识 正文

python反转链表的递归实现,python反转列表

时间:2023-05-04 19:37:12 阅读:33515 作者:4830

事先附上代码

#节点类

classnode(object ) :

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

self.data=data

self.next=nNext

#链表类

类通道(对象) :

def __init__(self ) :

self.head=None

self.length=0

#仅添加一个节点

def append (自,数据节点) :

#item必须是节点,如果添加的只是数字,则必须是节点

if身份(数据节点,节点) :

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

#删除节点

ef delete (自,索引) :

ifindex0or index=self.length :

返回无

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

返回

pre=current

current=current.next

temp_index =1

#链表翻转

ef反转(自,头) :

cur=head

pre=None

while cur is not None:

#打印(头) )。

tmp=cur.next

cur.next=pre

pre=cur

#打印(pre.data ) )

cur=tmp

head=pre

问题:在链表中添加三个元素并翻转

mychain=Chain ()

mychain.append(1) )。

mychain.append(2) )。

mychain.append(3) )。

mychain.reverse(mychain.head ) )。

依次输出链表中的各值

node2=mychain.head

while node2 is not None:

打印(node2. data )。

node2=node2.next

只输出一个。

pre正确反转,前面的head重新分配了现在的pre。 (前面的head指向的地址变成了现在的pre的地址。 )我认为是正确的。 以前mychain.head的地址是123,现在的mychain.head的地址是321。 它应该可以正常输出3-2-1,但结果只有1

辅助代码:

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

德夫变更(head ) :

head['k']=2

是变更(head )

是打印(头)

结果: {'a': 1,' b': 2,' k': 2}是引用传递,因此head作为参数传递给change函数,然后出现并改变其内容,这是正确的,但传递reverse函数?

主题说明

主题的来源和自己的想法

相关代码

//请在下面粘贴代码文本(请不要用图像代替代码) ) ) ) ) ) ) ) ) )。

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。