leetcode - 206. 反转链表
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
————————
解法一:迭代法
在遍历列表时,将当前节点的 next 指针改为指向前一个元素。由于节点没有引用其上一个节点,因此必须事先存储其前一个元素。在更改引用之前,还需要另一个指针来存储下一个节点。
作者:LeetCode
链接:https://leetcode-cn.com/problems/reverse-linked-list/solution/fan-zhuan-lian-biao-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
其C++代码如下:
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {public:ListNode* reverseList(ListNode* head) {ListNode* prev = NULL; # 初始化当前节点的上一个节点为NULLListNode* cur = head; # 初始化当前节点为headwhile(cur != NULL) # 如果当前节点的值不为NULL,一直迭代循环{ListNode* newl = cur->next; # 新建一个链表,存储当前节点指向的下一个节点cur->next = prev; # 当前节点指向的下一个节点修改为prevprev = cur; # 当前节点的上一个节点更新为当前节点cur = newl; # 当前节点更新为当前节点指向的下一个节点}return prev;}
};
解法二:递归法
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {public:ListNode* reverseList(ListNode* head) {if(head == NULL || head->next == NULL)return head;ListNode* newHead = reverseList(head->next);head->next->next = head; # 反转链表head->next = NULL; # 将当前节点指向的下一个节点标记为NULLreturn newHead;}
};
递归算法不容易理解,举个例子,有一个链表1->2->3->4->5->NULL,具体递归状态如下表示:
图片作者:王尼玛
链接:https://leetcode-cn.com/problems/reverse-linked-list/solution/dong-hua-yan-shi-206-fan-zhuan-lian-biao-by-user74/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
leetcode - 206. 反转链表相关推荐
- LeetCode 206. 反转链表 Reverse Linked List
5-1 链表,在节点间穿针引线 Reverse Linked List 题目: LeetCode 206. 反转链表 反转一个单链表. 示例: 输入: 1->2->3->4-> ...
- LeetCode 206. 反转链表(Reverse Linked List) 16
206. 反转链表 206. Reverse Linked List 题目描述 反转一个单链表. 每日一算法2019/5/19Day 16LeetCode206. Reverse Linked Lis ...
- LeetCode 206. 反转链表
206. 反转链表 难度 简单 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表. 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输 ...
- 【Java】LeetCode 206 反转链表
题目 :给你单链表的头节点 head ,请你反转链表,并返回反转后的链表. 解题思路 : 1.根据以上代码 ,来进行反转链表的操作: 2.最后实现的效果为: 具体思路: 1.首先判断如果链表为空的话, ...
- 26. Leetcode 206. 反转链表 (链表-反转链表)
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表.示例 1:输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2:输入:head = [1,2] 输出:[ ...
- [leetcode] 206.反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表. 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输 ...
- LeetCode 206. 反转链表 思考分析
题目 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可 ...
- LeetCode 206. 反转链表 双指针法 辅助结点 递归
题目链接 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表. 提示: 链表中节点的数目范围是 [0, 5000] -5000 <= Node.val <= 5000 进阶: ...
- LeetCode 206.反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表. 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输 ...
最新文章
- Window10:不能建立到远程计算机的连接。你可能需要更改此连接的网络设置。
- 【渝粤题库】广东开放大学 C语言程序设计 形成性考核
- 小程序开发之基础知识(0)
- android 基本知识
- Java Adapter Pattern(适配器模式)
- R+python︱XGBoost极端梯度上升以及forecastxgb(预测)+xgboost(回归)双案例解读
- linux令普通用户拥有root权限
- [WebApi] 捣鼓一个资源管理器--多文件上传+数据库辅助
- 2021-11-14
- html5 progressbar,jQuery进度条插件NUMBERPROGRESSBAR
- ceph pg+down+peering 故障排查与osd误删恢复
- 通过Matlab实现函数的简单的微分积分运算
- linux here,here交友app-here官网版下载v1.0-Linux公社
- java怎样断开http请求_http post请求管道断开
- LM38简易方波发生器
- mysql与mysqld
- 深入探索正交投影变换
- Java EE Security API ,给企业最棒的安全守护!
- 关于 java.util.LinkedHashMap cannot be cast to xxx错误的解决方案
- 170 FPS!YolactEdge:边缘设备上的实时实例分割,已开源!
热门文章
- [Java] Scanner(new File( )) 从文件输入内容
- 玉置成実(Nami Tamaki) -《もしも愿いが…》单曲[MP3]
- “十步一杀” 干掉你的职场压力
- 数据库设计技巧系列(二)——设计表和字段
- 来聊一聊window.fetch
- 申请Let's Encrypt永久免费SSL证书
- 现代计算机模型要求程序在执行,大学计算机基础考试考点.doc
- 个人猜测一下《黑神话:悟空》的部分剧情
- sqlachemy入门基础手册
- python-flask-uwsgi体验