题目
反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?

迭代+双指针

从某公众号(代码随想录)搬过来的gif图:看了能很好地理解转置的过程

class Solution {public:ListNode* reverseList(ListNode* head) {ListNode* pre = nullptr;ListNode* cur = head;ListNode* tmp;while(cur != NULL){//临时结点,暂存当前节点的下一个节点,用于后移tmp = cur->next;//当前节点指向它前面的节点(完成转置)cur->next = pre;//前指针后移pre = cur;//当前指针后移cur = tmp;}return  pre;}
};

递归解

递归思路:

递归动态图:

主要思路:
head 的下一个节点指向head
具体实现步骤过程见:
https://leetcode-cn.com/problems/reverse-linked-list/solution/dong-hua-yan-shi-206-fan-zhuan-lian-biao-by-user74/

递归模板;

class Solution {public:ListNode* reverseList(ListNode* head) {//终止条件://终止条件是当前节点或者下一个节点==null//终止条件为何是这个?第一个head是null,防止一开始传入的就是空指针//若一开始传入的就是空指针,则会返回空指针//若一开始传入的是head+null,则会直接返回head//若一开始传入的是head+node2+...+null,则正常递归返回if(head ==NULL || head->next == NULL){return head;}//调用递归+逻辑//在函数内部,改变节点的指向,也就是 head 的下一个节点指向 head 递归函数ListNode* cur = reverseList(head->next);head->next->next = head;//防止链表循环,需要将head.next设置为空,此时原来的head变为尾部head->next = NULL;return cur;}
};

LeetCode 206. 反转链表 思考分析相关推荐

  1. LeetCode 206. 反转链表 Reverse Linked List

    5-1 链表,在节点间穿针引线 Reverse Linked List 题目: LeetCode 206. 反转链表 反转一个单链表. 示例: 输入: 1->2->3->4-> ...

  2. LeetCode 206. 反转链表(Reverse Linked List) 16

    206. 反转链表 206. Reverse Linked List 题目描述 反转一个单链表. 每日一算法2019/5/19Day 16LeetCode206. Reverse Linked Lis ...

  3. LeetCode 206. 反转链表

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

  4. leetcode - 206. 反转链表

    反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代 ...

  5. 【Java】LeetCode 206 反转链表

    题目 :给你单链表的头节点 head ,请你反转链表,并返回反转后的链表. 解题思路 : 1.根据以上代码 ,来进行反转链表的操作: 2.最后实现的效果为: 具体思路: 1.首先判断如果链表为空的话, ...

  6. 26. Leetcode 206. 反转链表 (链表-反转链表)

    给你单链表的头节点 head ,请你反转链表,并返回反转后的链表.示例 1:输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2:输入:head = [1,2] 输出:[ ...

  7. [leetcode] 206.反转链表

    给你单链表的头节点 head ,请你反转链表,并返回反转后的链表. 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输 ...

  8. LeetCode 206. 反转链表 双指针法 辅助结点 递归

    题目链接 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表. 提示: 链表中节点的数目范围是 [0, 5000] -5000 <= Node.val <= 5000 进阶: ...

  9. LeetCode 206.反转链表

    给你单链表的头节点 head ,请你反转链表,并返回反转后的链表. 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输 ...

最新文章

  1. 网络共享服务(三)之SAMBA
  2. 003-JavaString数据类型
  3. 人月神话阅读笔记01
  4. mysql 主从 索引_Mysql繁忙主从库在线修改表结构与添加索引问题
  5. 如何监控主从故障是否正常?MySQL数据库
  6. IE XML漏洞官方补丁下载
  7. 多个jdk配置环境变量
  8. 如何快速注册一个谷歌gmail邮箱(2021)
  9. vc的含义(与c的区别)
  10. web前端入门到实战:web前端开发好学吗?
  11. 1-Java的诞生和发展
  12. 用DirectX做2D游戏的三种方法
  13. CleanMyMac XMac一键清理工具功能详解
  14. JN5169 系统控制器 API 函数表
  15. 【一天一门编程语言】Pascal 语言程序设计极简教程
  16. 华为手机怎么用计算机玩隐藏空间,华为手机怎么打开隐私空间
  17. 乌合之众——群体心理学
  18. 英语学习得六大黄金原则
  19. 关于OC引导的macOS黑苹果系统无法收到系统版本更新推送的解决方法
  20. 蚁群算法用于航路规划的matlab简单实现

热门文章

  1. jpanel把原本内容覆盖掉_A5:APP关键词覆盖你该了解哪些
  2. 移动端UC /QQ 浏览器的部分私有Meta 属性
  3. 解决maven项目Cannot change version of project facet Dynamic web module to 3.0
  4. 【译】10个有趣的JSCSS库(2018.10)
  5. Bootstrap源码解读之栅格化篇
  6. 课时76.兄弟选择器(掌握)
  7. jQuery中的ready
  8. [EffectiveC++]item34:区分接口继承和实现继承
  9. BZOJ2809 dispatching 【可并堆】
  10. 51nod 1278 相离的圆