链表之反转链表
时间:2019-10-22
本文章向大家介绍链表之反转链表,主要包括链表之反转链表使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
看题目:
总体思路:
迭代法,三个指针,先反后移,直到最后。
上代码:
1 # 假设存在链表 1 → 2 → 3 → Ø,我们想要把它改成 Ø ← 1 ← 2 ← 3。 2 # 在遍历列表时,将当前节点的 next 指针改为指向前一个元素。 3 # 由于节点没有引用其上一个节点,因此必须事先存储其前一个元素。在更改引用之前,还需要另一个指针来存储下一个节点。不要忘记在最后返回新的头引用! 4 class LinklistNode: 5 def __init__(self, x): 6 self.value = x 7 self.next = None 8 9 # class Solution: 10 # def reverse_linklist(self, head): 11 # # 首先定义三个指针 12 # pre = None # 用于指向反转前的链表当前位置的前一个位置的元素,此处赋值None是作为反转后链表的尾结点 13 # cur = head # 用于指向当前节点 14 # lat = cur.next # 反转之后,当前节点会与前后的元素都会失去联系,因此后面一个位置也要进行存储, 15 16 # while lat != None: 17 # cur.next = pre # 反 18 # pre = cur # 接下来三个语句实现往前的移动 19 # cur = lat 20 # lat = lat.next 21 22 # cur.next = pre 23 # return cur # 因为我们的判断条件是lat != None,当条件不满足的时候,当前节点cur自然就是翻转后的列表的头节点 24 25 # 但是上述代码存在一个重大bug,如果head = None,那么lat = lat.next就会出问题。 26 class Solution: 27 def reverse_linklist(self, head): 28 pre = None 29 cur = head 30 31 while cur != None: 32 lat = cur.next 33 cur.next = pre 34 pre = cur 35 cur = lat 36 37 return pre # 因为判断条件为cur != None,所以当不满足条件时cur到达了None节点,所以pre所指向的就是翻转后的链表的头节点
原文地址:https://www.cnblogs.com/xiaowei2092/p/11722405.html
- 备库报警邮件的分析案例(三)(r7笔记第16天)
- 简单易学的机器学习算法——神经网络之BP神经网络
- 24(02)多线程锁,线程通讯,线程组,线程池,多线程三种方式,匿名内部类,定时器,设计模式,单例模式,Runtime
- Go代码打通HTTPs
- 一个简单的MySQL参数导致的连接问题解惑(r7笔记第33天)
- [基础篇]Go语言变量
- [转载]Golang 编译成 DLL 文件
- [转载]Go JSON 技巧
- 简单易学的机器学习算法——Rosenblatt感知机的对偶解法
- Spring-拾遗
- Golang面试题
- 简单易学的机器学习算法——基于密度的聚类算法DBSCAN
- 厚土Go学习笔记 | 29. 接口
- Golang Template 简明笔记
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ceph修复pg inconsistent
- 基于kubernetes的kong网关实战
- 移动端适配必须掌握的基本概念和适配方案
- [OHIF-Viewers]医疗数字阅片-医学影像-Redux中的reducer到底是什么,以及它为什么叫reducer?
- 【从零开始用Swift开发一个iOS应用(仿微博)】开篇-1. demo上手体验
- 数据结构与算法-二维数组中的查找
- 卷积神经网络之 - GoogLeNet / Inception-v1
- 卷积神经网络之 - Alexnet
- Linux系列之学会使用Top命令进行系统监控
- 一简单线程同步笔试题分享,欢迎纠错分享更多思路
- 卷积神经网络之-NiN 网络(Network In Network)
- 【注意力机制】空间注意力机制之Spatial Transformer Network
- 【小技巧】用Python给你的视频添加字幕
- 震惊!我三步就搞定了 Tomcat 源码环境搭建!
- 【小技巧】深度学习中的那些效率提升利器(附资源)