当前位置: 首页 > article >正文

OJ06:206.反转链表

目录

  • 题目
  • 方案一:迭代
    • 思路分析
    • 代码展示
  • 方案二:递归


前面我们学到了单链表的相关的概念和接口的实现,今天,我们来看一下单链表中最经典的一道算法题:反转链表

题目

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

示例:
在这里插入图片描述
在这里插入图片描述

我们假设是这样的一个链表:

struct ListNode {
    int val;
    struct ListNode* next;
};

方案一:迭代

思路分析

定义3个链表指针:
❤struct ListNode* n1 = NULL,* n2 = head, * n3 = head->next;

我们通过循环迭代的方式来将其原地反转:
反转:

❤n2->next = n1;

迭代:

//迭代
❤ n1 = n2;
❤ n2 = n3;
//防止最后的引用NULL
if (n3 != NULL)
{
n3 = n3->next;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码展示

struct ListNode* reverseList(struct ListNode* head) {
    if (head == NULL || head->next == NULL)
    {
        return head;
    }
    struct ListNode* n1 = NULL, * n2 = head, * n3 = head->next;
    while (n2)
    {
        //反转
        n2->next = n1;
        
            //迭代
            n1 = n2;
            n2 = n3;
            //防止最后的引用NULL
            if (n3 != NULL)
            {
                n3 = n3->next;
            }
    }
    return n1;
}

方案二:递归

这种方法理解起来有点困难:
比较难以表达,这里展示一下代码:

struct ListNode* Reverse(struct ListNode* head) {
    struct ListNode* pre = NULL;
    if (head == NULL || head->next == NULL)   //空链表或只有一个节点的链表直接返回头指针
    {
        return head;
    }
    struct ListNode* newHead = Reverse(head->next);    //进行递归,找到最后一个节点后返回
    head->next->next = head; //把当前节点的下一个节点指针指向这个节点,不断归,实现链表的反转
    head->next = NULL;
    return newHead;//最后返回新的头结点
}
}

如有问题,劳烦各位在评论区@我,我一直都在;



http://www.kler.cn/a/385430.html

相关文章:

  • React diff算法和Vue diff算法的主要区别
  • 【系统集成项目管理工程师】知识点汇总
  • 用JavaScript、Nodejs写一个本地tcp服务,用于前端WebSocket调试
  • 串口接收,不定长数据接收
  • Go-HTTP框架设计实现概述
  • Uefi Application小游戏开发之贪吃蛇
  • 保障性住房管理:SpringBoot技术优势分析
  • 化工厂主要涉及的自动化备件有哪些?
  • go语言中package详解
  • MySQL 8.0中的‘caching_sha2_password‘身份验证插件问题
  • Gemini 对话机器人加入开源盲水印技术来检测 AI 生成的内容
  • Scala包对象。
  • java导出word文件(手绘)
  • GCC和clang的爱恨情仇
  • 【Linux系统】—— 基本指令(二)
  • SpringBoot实现的企业资产管理系统
  • 纯C++信号槽使用Demo (sigslot 库使用)
  • PyQt入门指南四十六 性能优化策略
  • AntPathMatcher 技术文档
  • Affinity part 2 - 系统拓扑结构和控制亲和性
  • 气膜场馆:推动体育文化旅游创新发展的关键力量—轻空间
  • 支付宝与华为终端联手,移动支付即将进入“碰时代”
  • 掌握springboot过滤器,拦截器 ,aop
  • 宠物空气净化器哪家好?希喂、安德迈、霍尼韦尔除毛能力测评
  • 量化交易系统开发-实时行情自动化交易-数据的种类
  • 深入理解Java中的接口