题目要求:


题目链接:点击这里,直接跳转

思路:

方法1:头插法
将链表每个节点依次取下来头插到新链表,即为原链表的反转;因为改变了当前节点的 next 指向,必须先保存 next 地址。

图解如下:



重复以上步骤:直到终止循环

实现代码:

struct ListNode* reverseList(struct ListNode* head){//新链表的头指针struct ListNode* newhead = NULL;//需要头插的结点struct ListNode* cur = head;while(cur){//保存需要头插结点的下一个节点struct ListNode* next = cur->next;//将cur头插到新链表cur->next = newhead;newhead = cur;cur = next;}return newhead;
}

方法2:迭代

假设存在链表 1→2→3→∅,我们想要把它改成 ∅←1←2←3

在遍历列表时,将当前节点的 next 指针改为指向前一个元素。由于节点没有引用其上一个节点,因此必须事先存储其前一个元素。在更改引用之前,还需要另一个指针来存储下一个节点。不要忘记在最后返回新的头引用。

图解如下:




实现代码:

struct ListNode* reverseList(struct ListNode* head){struct ListNode* pre = NULL;//需要反转指向的结点struct ListNode* cur = head;while(cur){//保存需要头插结点的下一个节点struct ListNode* next = cur->next;//将cur头插到新链表cur->next = pre;pre = cur;cur = next;}return pre;
}

反转链表(图解,易懂)相关推荐

  1. 反转链表--清晰易懂的两种方法

    反转一个单链表.如下示例:: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL public ...

  2. 力扣 反转链表(图解)

    一: 供以后复习看看 206. 反转链表 难度简单 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表. 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2, ...

  3. 假设以带头结点的循环链表表示队列_关于反转链表,看这一篇就够了!

    本期例题:LeetCode 206 - Reverse Linked List[1](Easy) 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL ...

  4. [Leedcode][JAVA][第25题][K个一组反转链表][链表][递归]

    [问题描述][第25题][K个一组反转链表][困难] 时间复杂度:O(N^2) 空间复杂度:O(1) ```java 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表.k 是一个正整数, ...

  5. PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)

    PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)   http://www.patest.cn/contests/pat-b-practise/1025 ...

  6. 剑指offer:面试题24. 反转链表

    题目:反转链表 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4- ...

  7. leetcode-92 反转链表II

    题目描述如下: 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2->3->4->5->NUL ...

  8. 反转链表JAVA算法_链表反转算法

    1 packagecom.trs.codetool.sort;2 3 /** 4 *@authorzheng.changgang5 * @date 2020-01-02 09:576 * 链表的常见算 ...

  9. LeetCode实战:反转链表

    背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Reverse a s ...

  10. 剑指offer_第15题_反转链表_Python

    题目描述 输入一个链表,反转链表后,输出新链表的表头. 理解 怎么反转? 我要找到每个结点 改变每个结点的next 参考阅读: 链表翻转的图文讲解(递归与迭代两种实现) 翻转链表的三种方法 解题思路 ...

最新文章

  1. Rsync+inotify搭建使用
  2. 北斗导航 | 坐标变换矩阵(CTM)与欧拉角(Euler)互相转换:Matlab源代码
  3. python2.7虚拟环境virtualenv安装及使用
  4. chrome启用flash_如何在Google Chrome中启用Adobe Flash Player
  5. C++学习之路 | PTA乙级—— 1038 统计同成绩学生 (20 分)(精简)
  6. 制作简单的java应用程序_使用exe4j工具制作简单的java应用程序
  7. 影院要求自费购买3D眼镜是“霸王条款” 官方都开始吐槽了!
  8. linux下spark的python编辑_Linux下搭建Spark 的 Python 编程环境的方法
  9. Java Queue 使用总结
  10. 通达信手机版分时图指标大全_通达信手机版指标源码大全,响应大家要求今日直接附上,快来收藏...
  11. 关于SWAT模型的一些原理(一)
  12. 【效率提升】建议抛弃全拼输入,拥抱双拼
  13. 贪心科技机器学习训练营(十)
  14. vueX的mutation/action个人学习总结
  15. 基于双服务器的抗关键词猜测攻击的公钥可搜索加密方案
  16. vue修改预设preset
  17. 补码(为什么按位取反再加一)
  18. 【软切换】WCDMA软切换技术的仿真
  19. 换脸方法之FaceShifter
  20. C++ 不高兴的津津

热门文章

  1. 韩顺平老师php从入门到精通149讲
  2. JS实现本地文件选择
  3. Multitask Learning
  4. android 极光推送教程 视频教程,Android 极光推送教程
  5. html 一键转发微信朋友圈,微信公众号H5,分享朋友,分享朋友圈处理
  6. 个人朋友圈时代过去了,企业微信朋友圈开辟营销新思路
  7. 【转】MapGIS基础系列(三)--服务疑难面面观
  8. TeamViewer远程连接控制软件
  9. ElasticSearch服务器的搭建与使用
  10. 2018-2019-1 20165318 20165322 20165326 实验二 固件程序设计