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;
    }
};
相关推荐
kyle~2 分钟前
FANUC机械臂---R寄存器
开发语言·c++·机器人·fanuc
_日拱一卒5 分钟前
LeetCode:206反转链表
算法·leetcode·链表
山甫aa8 分钟前
哈希表的变化(链表数组强化)----从零开始的数据结构
数据结构·哈希算法·散列表
Mem0rin10 分钟前
[Java/数据结构]树的基本概念、二叉树的创建和遍历
java·开发语言·数据结构
我不是懒洋洋11 分钟前
【经典题目】链表OJ(轮转数组、返回倒数第k个节点、链表的回文结构)
c语言·开发语言·数据结构·算法·链表·visual studio
SteveSenna12 分钟前
aubo i5+pika realsense+ACT训练完整流程
人工智能·学习·算法·机器人
kyle~13 分钟前
字节序---大端与小端
c++·机器人
励志的小陈18 分钟前
数据结构--堆(C语言实现)
android·c语言·数据结构
AC赳赳老秦18 分钟前
OpenClaw对接百度指数:关键词热度分析,精准定位博客创作方向
java·python·算法·百度·dubbo·deepseek·openclaw
charlie11451419119 分钟前
通用GUI编程技术——图形渲染实战(三十)——Direct2D几何体系统:从路径到命中测试
开发语言·c++·windows·信息可视化·c·图形渲染·win32