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;
    }
};
相关推荐
HugoStudio_SWAN2 小时前
洛谷 P1420 / P1179 / B4262 最长连号、数字统计与词频统计——统计的三种面孔
c++·学习·程序人生·算法
PFFstronger3 小时前
测试工程师的职业价值
职场和发展
青 春 记 忆3 小时前
LeetCode 350. 两个数组的交集 II|Python 解法详解
python·算法·leetcode
raindayinrain3 小时前
c++并发
c++
j7~3 小时前
【C++】智能指针的使用及其原理--详解
c++·c++11·内存泄漏·智能指针·raii·boost智能指针
阳明山水4 小时前
销量预测2025—2026:从模型竞赛到系统融合的范式转型
人工智能·深度学习·算法·机器学习·架构
桐盛科技4 小时前
拒绝“漂绿”风险:基于边缘计算的碳排放数据清洗算法与实时校验逻辑
人工智能·算法·边缘计算
wuyk5554 小时前
107.FreeRTOS 链表深度解析:从原理到面试满分答案
c语言·开发语言·数据结构·stm32·单片机·链表·面试
-dzk-4 小时前
【链表】LC 138.随机链表的复制
数据结构·链表
Tongzhi20264 小时前
通芝科技考勤软件三大发展趋势:AI大模型、无感识别与数据底座
大数据·科技·算法·爬山算法