《手撕链表题系列-2》反转链表

简介: 本系列主要讲解链表的经典题注:划重点!!必考~

前言


  • 本系列主要讲解链表的经典题


注:划重点!!必考~


反转链表


力扣链接:206. 反转链表 - 力扣(LeetCode) (leetcode-cn.com)


  • 题目描述:


给你单链表的头节点 head ,请你反转链表,并返回反转后的链表


示例:

18.png

  • 提示:


  • 链表中节点的数目范围是 [0, 5000]
  • -5000 <= Node.val <= 5000


  • 解题思路:


这里我们采用三指针进行反转链表:

  1. 指针cur进行遍历链表
  2. 指针next记录cur的下一个指针,防止反转时下一个节点地址丢失
  3. 指针prev用来记录cur后指针,以便构建反转后的节点关系

注:需要处理好首节点节点之间的更替关系


参考代码:


/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* reverseList(struct ListNode* head){
    struct ListNode* prev=NULL,*cur=head,*next;
    while(cur)//cur为NULL时遍历链表结束
    {
        //保存下一个节点地址
        next=cur->next;
        //反转链接方向
        cur->next=prev;
        //更新后指向结点位置
        prev=cur;
        //更新指向当前节点位置
        cur=next;
    }
    return prev;
}

结果:


18.png


每日k题无烦恼,留个三连再走也不迟~

相关文章
|
9月前
|
索引
【力扣刷题】两数求和、移动零、相交链表、反转链表
【力扣刷题】两数求和、移动零、相交链表、反转链表
62 2
【力扣刷题】两数求和、移动零、相交链表、反转链表
|
算法
【LeetCode力扣】234 快慢指针 | 反转链表 | 还原链表
【LeetCode力扣】234 快慢指针 | 反转链表 | 还原链表
104 0
|
测试技术
【LeetCode题目详解】(二)206.反转链表、876.链表的中间结点
【LeetCode题目详解】(二)206.反转链表、876.链表的中间结点
98 0
【面试必刷TOP101】反转链表 & 链表内指定区间反转
【面试必刷TOP101】反转链表 & 链表内指定区间反转
73 0
【Leetcode -86.分隔链表 -92.反转链表Ⅱ】
【Leetcode -86.分隔链表 -92.反转链表Ⅱ】
52 0
代码随想录Day03 | 链表基础1 LeetCode T203 移除链表元素 T707设计链表 T206 反转链表
代码随想录Day03 | 链表基础1 LeetCode T203 移除链表元素 T707设计链表 T206 反转链表
65 0
|
9月前
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点.
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点
92 1
|
9月前
|
C++
[leetcode 链表] 反转链表 vs 链表相交
[leetcode 链表] 反转链表 vs 链表相交
|
9月前
|
C语言 C++ 索引
【力扣】141. 环形链表、160. 相交链表、206.反转链表、234. 回文链表
【力扣】141. 环形链表、160. 相交链表、206.反转链表、234. 回文链表
|
9月前
|
C语言
反转链表、链表的中间结点、合并两个有序链表【LeetCode刷题日志】
反转链表、链表的中间结点、合并两个有序链表【LeetCode刷题日志】