博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer——python【第15题】反转链表
阅读量:4645 次
发布时间:2019-06-09

本文共 982 字,大约阅读时间需要 3 分钟。

题目描述

翻转一个链表

样例:给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null

思路

一种比较简单的方法是用“摘除法”。就是先新建一个空节点,然后遍历整个链表,依次令遍历到的节点指向新建链表的头节点

设原来的链表是1->2->3,步骤是这样的:

1. 新建空节点:None

2. 1->None
3. 2->1->None
4. 3->2->1->None

解答

# -*- coding:utf-8 -*-# class ListNode:#     def __init__(self, x):#         self.val = x#         self.next = Noneclass Solution:    # 返回ListNode    def ReverseList(self, pHead):        if not pHead or not pHead.next:            return pHead        newHead = None        while pHead is not None:            temp = pHead.next            pHead.next = newHead            newHead = pHead            pHead = temp        return newHead

详细复述一下代码:

在第一轮循环里:首先定义新链表头节点newHead,然后保存原头节点的下一个节点(2)为temp,然后让原头节点(1)指向newHead(空),此时1和2的链条断了;接着让newHead变成了原头

节点(1),最后把原头节点变成了temp(2),看看这轮下来有什么改变,其实是让newHead变成了1,并且指向了None,而pHead变成了2;

接着第二轮循环,可想而知这一轮的目的是让newHead变成2,并且指向1,让pHead变成3

最后的结果就是newHead变成了3,3->2->1->None依次串起来了(最后那个None串不串都一样)

当然还有其他方法,挖个坑,下次补上!

转载于:https://www.cnblogs.com/yqpy/p/9547099.html

你可能感兴趣的文章
α训练营——项目任务--界面
查看>>
DAY1-作业
查看>>
关于浮动与清除浮动
查看>>
mongoose中的versionKey
查看>>
java ->Arrays类
查看>>
generate failed: Cannot resolve classpath entry: mysql-connector-java-5.1.38.jar
查看>>
PHP安装posix、pctl扩展
查看>>
window.requestAnimationFrame()
查看>>
AJAx 刷新页面
查看>>
查找单向链表中倒数第K个节点
查看>>
vue <input type="file">上传图片、预览、删除
查看>>
移动端H5地图离线瓦片方案(1)(2)
查看>>
缓存的三种方案
查看>>
CentOS 7 下安装 Nginx
查看>>
Java-Day04,基本语法
查看>>
C# 实现函数回调
查看>>
一些源码的地址
查看>>
2013-11
查看>>
一、Windows下Git的安装与配置
查看>>
设计灵感
查看>>