python单链表反转的具体代码是什么
Admin 2022-09-14 群英技术资讯 906 次浏览
这篇文章主要介绍了“python单链表反转的具体代码是什么”相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python单链表反转的具体代码是什么文章都会有所收获,下面我们一起来看看吧。代码如下:
class Node(object): def __init__(self, elem, next_=None): self.elem = elem self.next = next_ def reverseList(head): if head == None or head.next==None: # 若链表为空或者仅一个数就直接返回 return head pre = None next = None while(head != None): next = head.next # 1 head.next = pre # 2 pre = head # 3 head = next # 4 return pre if __name__ == '__main__': l1 = Node(3) # 建立链表3->2->1->9->None l1.next = Node(2) l1.next.next = Node(1) l1.next.next.next = Node(9) l = reverseList(l1) print (l.elem, l.next.elem, l.next.next.elem, l.next.next.next.elem)
原始单链表:

反转后单链表:

反转过程如下:

第一步:next = head.next
将 head.next 赋值给 next 变量,即next 指向了节点2,先将节点2 保存起来。
第二步:head.next = pre (初始pre==None)
将 pre 变量赋值给 head.next,即 此时节点1 指向了 None
第三步:pre = head
将 head 赋值给了 pre,即 pre 指向节点1,将节点1 设为“上一个节点”
第四步:head = next
将 next 赋值给 head,即 head 指向了节点2,此时节点2 设为“头节点”
第一次循环完毕,进入第二次循环,如下图:

第一步:next = head.next
将 head.next 赋值给 next 变量,即 next 指向了节点3,先将节点3 保存起来。
第二步:head.next = pre (此时的pre已经不为None)
将 pre 赋值给 head.next,pre 在上一次循环的时候指向了节点1,那么这一步的意义就是节点2 指向了 节点1,完成1和2节点的反转。
第三步:pre = head
将 head 赋值给了 pre,即 pre 指向节点2,将节点2 设为“上一个节点”
第四步:head = next
将 next 赋值给 head,即 head 指向了节点3。此时节点3 设为“头节点”
第二次循环完毕,以此类推!第三次第四次第五次循环。最后反转成如下图

若干注意点:
(1)帮助记忆图:

(2)当前头节点的下一个节点一定要保存(比如:当前头节点为2,先将节点3 保存起来)
(3)实现反转的key point: head.next = pre
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
今天给大家带来一期围棋的源码分享。下面我们先看看效果。游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法,感兴趣的可以了解一下
这篇文章主要介绍了Python程序员开发中常犯的10个错误,不知道你有没有中枪呢,需要的朋友可以参考下
Python中selenium库的作用是啥?对新手来说,可能对selenium库比较陌生,对于selenium库的作用和使用都不是很了解。对此,下面小编就给大家简单的介绍一下Python中的selenium库,感兴趣的朋友就继续往下看吧。
这篇文章主要为大家介绍了python的信号量,条件变量和事件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
这篇文章主要为大家详细介绍了如何利用Python实现五子棋游戏(人机对战版),文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008