Leetcode206.反转链表(HOT100)

链接:

我的代码:

cpp 复制代码
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode* p = head;
        ListNode*res = new ListNode(-1);
        while(p){
            ListNode*k = res->next;
            res->next = p;
            p = p->next;
            res->next->next = k;
        }
        return res->next;
    }
};

我用的是迭代实现。

更好的代码:

cpp 复制代码
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(!head)return nullptr;
        ListNode* a = head,*b = head->next;
        while(b){
            ListNode*c = b->next;
            b->next = a;
            a = b;
            b = c;
        }
        head->next = nullptr;
        return a;
    }
};

第一步:

第二步:

最后一步:

此时,别忘了,head仍然指向原来的头结点,这个头结点现在是尾节点了,所以把它的next置空。

更好的代码(递归实现):

cpp 复制代码
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(!head||!head->next)return head;
        auto tail = reverseList(head->next);
        head->next->next = head;
        head->next = nullptr;
        return tail;
    }
};

图示:

上图是head->next->next = head;

完毕。

相关推荐
爱思德学术21 分钟前
中国计算机学会(CCF)推荐学术会议-B(交叉/综合/新兴):BIBM 2025
算法
冰糖猕猴桃32 分钟前
【Python】进阶 - 数据结构与算法
开发语言·数据结构·python·算法·时间复杂度、空间复杂度·树、二叉树·堆、图
lifallen1 小时前
Paimon vs. HBase:全链路开销对比
java·大数据·数据结构·数据库·算法·flink·hbase
liujing102329292 小时前
Day04_刷题niuke20250703
java·开发语言·算法
2401_881244402 小时前
Treap树
数据结构·算法
乌萨奇也要立志学C++2 小时前
二叉树OJ题(单值树、相同树、找子树、构建和遍历)
数据结构·算法
网安INF2 小时前
深度学习中的逻辑回归:从原理到Python实现
人工智能·python·深度学习·算法·逻辑回归
wsxqaz2 小时前
浏览器原生控件上传PDF导致hash值不同
算法·pdf·哈希算法
NAGNIP3 小时前
Transformer注意力机制——MHA&MQA&GQA
人工智能·算法
摘星编程3 小时前
多模态AI Agent技术栈解析:视觉-语言-决策融合的算法原理与实践
人工智能·算法·多模态ai·视觉语言融合·ai决策算法