递归_反转链表_C++

一.题目解析

算法解析:1.循环

三指针法:prev,cur,next,然后cur指针指向prev实现反转,注意指针前进的顺序

代码实现

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode* prev=nullptr;
        ListNode* cur=head;
        
        while(cur!=nullptr)
        {
            ListNode* next=cur->next;
            cur->next=prev;
            prev=cur;
            cur=next;
        }
        return prev;
    }
};

算法解析2:递归

思路1:

思路2:

递归代码实现

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(head==nullptr||head->next==nullptr)return head;//边界情况

        ListNode*newhead= reverseList(head->next);//深度优先遍历
        head->next->next=head;
        head->next=nullptr;
        return newhead;
    }
};
相关推荐
2601_962189603 分钟前
【SpringBoot】使用IDEA创建SpringBoot项目
java·spring boot·intellij-idea
步行cgn3 分钟前
Spring Boot 启动报错:MissingServletWebServerFactoryBean 的排查与解决
java·spring boot·后端
XLYcmy4 分钟前
HTML/CSS/JS 基础与 Vue 技术栈深度解析
java·前端·css·html·vue3·vue2·api
~木雨14 分钟前
String 底层原理与常量池全解析:byte []+coder、intern 陷阱、substring 内存泄漏,一篇讲透
java·jvm·内存优化·string·字符串常量池
新知图书23 分钟前
12.3 智能体中Skill的约束与自进化实战
java·前端·数据库
en.en..31 分钟前
C语言 static函数与头文件封装规范
java·c语言·前端
海兰34 分钟前
【 Python 量化交易】开篇
开发语言·python·信息可视化·量化交易
步行cgn38 分钟前
Spring Boot 项目打包部署详解
java·spring boot·后端
啥都想学点的研究生1 小时前
一篇文章讲清楚:逻辑回归
算法·机器学习·逻辑回归
神仙别闹1 小时前
基于C++ WinPcap 的网络抓包软件
网络·c++·php