反转链表

递归

class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(head==NULL||head->next==NULL)  return head;
        //先反转head后面的链表,最后将head接在新链表最后即可
        auto tail=reverseList(head->next);
        //将head从新链表尾部接上去
        head->next->next=head;
        head->next=NULL;
        return tail;//tail是反转后的链表的新头节点
    }
};

迭代

class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(!head)  return NULL;
        auto a=head;auto b=head->next;
        a->next=NULL;
        while(a&&b)
        {
            auto c=b->next;
            b->next=a;
            a=b;
            b=c;
        }
        return a;
    }
};
posted @   穿过雾的阴霾  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示