python版单链表反转
作者:xiaoming_tju 时间:2021-08-20 17:11:12
本文实例为大家分享了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
来源:https://blog.csdn.net/gongliming_/article/details/88712221
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
asp函数遍历文件夹代码
关于go语言编码需要放到src 文件夹下的问题
![](https://img.aspxhome.com/file/2023/5/86305_0s.png)
sql server update 表的问题
使用django实现一个代码发布系统
![](https://img.aspxhome.com/file/2023/4/65114_0s.png)
Python实现我的世界小游戏源代码
![](https://img.aspxhome.com/file/2023/4/60704_0s.jpg)
Python学习之字典和集合的使用详解
全网最新用python实现各种文件类型转换的方法
![](https://img.aspxhome.com/file/2023/7/65507_0s.png)
PHP获取url的函数代码
MSSQL存储过程解秘过程全析
简单了解python中的与或非运算
![](https://img.aspxhome.com/file/2023/5/67915_0s.png)
交互因视觉设计而更完美
实例解析Python中的__new__特殊方法
基于Python绘制3D立体爱心图案的示例详解
![](https://img.aspxhome.com/file/2023/3/68263_0s.png)
理解JavaScript作用域链
SQL Server密码管理的六个危险判断
5 个简单实用的 CSS 属性
![](https://img.aspxhome.com/file/UploadPic/20103/10/01-98s.gif)
详解Python遍历字典的键和值
![](https://img.aspxhome.com/file/2023/6/71996_0s.png)
python中必会的四大高级数据类型(字符,元组,列表,字典)
![](https://img.aspxhome.com/file/2023/3/75373_0s.jpg)