python数据结构之链表_Python数据结构之翻转链表
翻转一个链表
样例:给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null
一种比较简单的方法是用“摘除法”。就是先新建一个空节点,然后遍历整个链表,依次令遍历到的节点指向新建链表的头节点。
那样例来说,步骤是这样的:
1. 新建空节点:None
2. 1->None
3. 2->1->None
4. 3->2->1->None
代码就非常简单了:
"""
Definition of ListNode
class ListNode(object):
def __init__(self, val, next=None):
self.val = val
self.next = next
"""
class Solution:
"""
@param head: The first node of the linked list.
@return: You should return the head of the reversed linked list.
Reverse it in-place.
"""
def reverse(self, head):
temp = None
while head:
cur = head.next
head.next = temp
temp = head
head = cur
return temp
# write your code here
当然,还有一种稍微难度大一点的解法。我们可以对链表中节点依次摘链和链接的方法写出原地翻转的代码:
"""
Definition of ListNode
class ListNode(object):
def __init__(self, val, next=None):
self.val = val
self.next = next
"""
class Solution:
"""
@param head: The first node of the linked list.
@return: You should return the head of the reversed linked list.
Reverse it in-place.
"""
def reverse(self, head):
if head is None:
return head
dummy = ListNode(-1)
dummy.next = head
pre, cur = head, head.next
while cur:
temp = cur
# 把摘链的地方连起来
pre.next = cur.next
cur = pre.next
temp.next = dummy.next
dummy.next = temp
return dummy.next
# write your code here
需要注意的是,做摘链的时候,不要忘了把摘除的地方再连起来
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
更多Python数据结构之翻转链表相关文章请关注PHP中文网!
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉
本文系统来源:php中文网
python数据结构之链表_Python数据结构之翻转链表相关推荐
- python列表是顺序表还是链表_Python数据结构与算法(链表使用详解)
链表 单向链表 p是头节点,指向第一个值,最后一个是伪节点,因为不指向地址. 表元素域elem用来存放具体的数据 链接域next用来存放下一个节点的位置(python中的标识) 变量p指向链表的头节点 ...
- python链表_python数据结构之链表(一)
2020-07-09更新 细细琢磨了一下以前的这篇文章,感觉这样不太能体现链表的精髓,要想真的想深入研究链表这种数据结构,在没有指针的语言中,还是应该用静态链表来模拟真正链表比较好. 对于静态链表,个 ...
- python数据结构的列表_Python数据结构之列表
一,数据结构的概念 数据结构是通过某种方式组织在一起的数据集合,这些数据元素可以是数字或者字符,甚至可以是其他的数据结构. Python中最基本的数据结构是序列(sequence).序列中的每个元素被 ...
- python数据结构算法优势_Python数据结构与算法(一)----- 算法效率
一.引入 先来看一道题: 如果a+b+c=1000, 且a2+b2=c^2(a,b,c为自然数),如何求出所有a,b,c可能的组合? (1) 枚举法 import time start_time = ...
- python的线性链表_Python线性表——单链表-阿里云开发者社区
Python线性表--单链表 线性表简介 线性表是一种线性结构,它是由零个或多个数据元素构成的有限序列.线性表的特征是在一个序列中,除了头尾元素,每个元素都有且只有一个直接前驱,有且只有一个直接后继, ...
- python创建一个有序链表_Python实现单向有序链表(Singly linked list)
概念介绍 上一博文已经介绍了Python实现单向无序链表的实现方式,这篇博文来介绍Python如何实现单向有序链表.有序和无序仅仅指节点所包含的数据成员的大小排列顺序,有序指各个节点按照节点数据成员的 ...
- 【LeetCode笔记】剑指 Offer 06. 从尾到头打印链表(Java、翻转链表)
文章目录 题目描述 思路 & 代码 二刷 题目描述 思路 & 代码 一次遍历:翻转链表 + 记录长度 二次遍历:遍历翻转后的链表,更新数组 O(n) & O(1) /*** D ...
- python递归编程题_Python数据结构与算法41:递归编程练习题4:铺瓷砖
注:本文如涉及到代码,均经过Python 3.7实际运行检验,保证其严谨性. 本文阅读时间约为8分钟. 递归编程练习题4:铺瓷砖 给定一个长度为N的区域,及4种不同长度的瓷砖:灰瓷砖(长为1格).红瓷 ...
- python数据结构递归树_python数据结构(对称二叉树递归和迭代)
1.题目描述 给定一个二叉树,检查它是否是镜像对称的. 2.代码详解 2.1 递归写法 # Definition for a binary tree node. class TreeNode(obje ...
最新文章
- 资源已存在时POST的HTTP响应代码
- OpenJDK 14 性能保持提升,但 OpenJDK 8 仍是最强王者
- 【干货】产品经理处理工作中突发事件的新技能Get!
- Mysql查看和修改时区
- go语言int类型转化成string类型的方式
- [Kaggle] Spam/Ham Email Classification 垃圾邮件分类(BERT)
- LeetCode 887. 鸡蛋掉落(DP,难、不懂)
- post发送byte数组_KAFKA消息发送
- Java LinkedList addFirst()方法与示例
- CSS 制作垂直导航
- 华为再发行30亿元超短期融资券
- HDU1106 排序(解法二)(废除!!!)
- Jupyter notebook最简原型界面设计 - ipywidgets与lineup_widget
- 一个关于Show窗口与Invalidate();顺序问题
- SQL 查询CET使用领悟
- 【图像去噪】基于matlab GUI均值+中值+高斯低通+多种小波变换图像去噪【含Matlab源码 856期】
- 用c语言编写函数流程,C语言课程设计————写下流程图! 谢谢
- mysql面试必会6题经典_经典sql面试题及答案第7期
- Python安装pandas模块
- mysql存储过程转义字符_mysql存储过程转义字符
热门文章
- centos7 关闭防火墙和selinux
- Linux网络协议栈(一)——Socket入门(1)
- [.NET领域驱动设计实战系列]专题二:结合领域驱动设计的面向服务架构来搭建网上书店...
- string类的写时拷贝
- grunt集成自动启动
- http代理的脚本http_proxy.py
- 网管分析数据包? 组合一下吧。
- Oracle SQL Loader的详细语法
- 美国虚拟主机大打安全牌争抢国内高端外贸主机市场
- 如果你是程序员 别说你没有用过这五大编程工具