《手撕链表题系列-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题无烦恼,留个三连再走也不迟~

相关文章
|
5月前
|
算法
【LeetCode力扣】234 快慢指针 | 反转链表 | 还原链表
【LeetCode力扣】234 快慢指针 | 反转链表 | 还原链表
50 0
|
5月前
|
测试技术
【LeetCode题目详解】(二)206.反转链表、876.链表的中间结点
【LeetCode题目详解】(二)206.反转链表、876.链表的中间结点
43 0
|
6月前
【面试必刷TOP101】反转链表 & 链表内指定区间反转
【面试必刷TOP101】反转链表 & 链表内指定区间反转
35 0
|
6月前
【Leetcode -86.分隔链表 -92.反转链表Ⅱ】
【Leetcode -86.分隔链表 -92.反转链表Ⅱ】
24 0
|
6月前
代码随想录Day03 | 链表基础1 LeetCode T203 移除链表元素 T707设计链表 T206 反转链表
代码随想录Day03 | 链表基础1 LeetCode T203 移除链表元素 T707设计链表 T206 反转链表
25 0
|
1月前
|
C语言
反转链表、链表的中间结点、合并两个有序链表【LeetCode刷题日志】
反转链表、链表的中间结点、合并两个有序链表【LeetCode刷题日志】
|
1月前
|
存储 算法 Java
【数据结构与算法】2、链表(简单模拟 Java 中的 LinkedList 集合,反转链表面试题)
【数据结构与算法】2、链表(简单模拟 Java 中的 LinkedList 集合,反转链表面试题)
43 0
|
3月前
|
Python 索引 Java
Python每日一练(20230406) 环形链表 II、反转链表、子集 II
Python每日一练(20230406) 环形链表 II、反转链表、子集 II
25 0
Python每日一练(20230406) 环形链表 II、反转链表、子集 II
|
4月前
【每日一题Day281】LC143 重排链表 | 快慢指针+反转链表
【每日一题Day281】LC143 重排链表 | 快慢指针+反转链表
16 0
|
4月前
|
存储 算法
六六力扣刷题链表之反转链表 II
六六力扣刷题链表之反转链表 II
24 0