leetcode 206 反转链表

一、题目描述

二、解题思路

整体思路

可以采用递归的方法来解决这个问题。

具体思路

函数实现的效果:reverseList函数用于将以head为头结点的链表反转,并返回新的头结点;

递归出口:如果链表为空,或者链表内只有一个元素,则无需反转,直接返回head

函数体

(1)第一步,先将head之后的结点反转,用newhead指针接收新的头结点,反转之前的链表如图1所示,反转之后的链表如图2所示。

(2)**第二步,将head指向的结点接到反转后的链表的尾部,并将head结点的指针域置为空。**完成该步骤的链表如下图所示:

(3)返回newhead即可。

三、代码实现

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;

        auto newhead=reverseList(head->next);
        head->next->next=head;
        head->next=nullptr;
        return newhead;
    }
};
相关推荐
啟明起鸣11 分钟前
【C++ 性能提升技巧】C++ 的引用、值类型、构造函数、移动语义与 noexcept 特性,可扩容的容器
开发语言·c++
故以往之不谏12 分钟前
函数--值传递
开发语言·数据结构·c++·算法·学习方法
渐暖°21 分钟前
【leetcode算法从入门到精通】5. 最长回文子串
vscode·算法·leetcode
今天_也很困21 分钟前
LeetCode热题100-560. 和为 K 的子数组
java·算法·leetcode
v_for_van35 分钟前
力扣刷题记录2(无算法背景,纯C语言)
c语言·算法·leetcode
2301_8112329840 分钟前
低延迟系统C++优化
开发语言·c++·算法
alphaTao42 分钟前
LeetCode 每日一题 2026/1/26-2026/2/1
算法·leetcode
txinyu的博客1 小时前
解析muduo源码之 ThreadLocal.h
c++
向哆哆1 小时前
构建跨端健身俱乐部管理系统:Flutter × OpenHarmony 的数据结构与设计解析
数据结构·flutter·鸿蒙·openharmony·开源鸿蒙
橘子师兄1 小时前
C++AI大模型接入SDK—ChatSDK封装
开发语言·c++·人工智能·后端