前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《手撕链表题系列-2》反转链表

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

作者头像
用户9645905
发布2022-11-30 11:41:57
2060
发布2022-11-30 11:41:57
举报
文章被收录于专栏:Linux学习~

前言

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

注:划重点!!必考~

反转链表

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

  • 题目描述:

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

  • 示例:
  • 提示:
  • 链表中节点的数目范围是 [0, 5000]
  • -5000 <= Node.val <= 5000
  • 解题思路:

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

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

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

  • 参考代码:
代码语言:javascript
复制
/**
 * 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;
}
  • 结果:

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 反转链表
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档