剑指offer(24)

剑指offer(24)

剑指 Offer 24. 反转链表

难度简单430

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

限制:

0 <= 节点个数 <= 5000

对于链表的处理,很多时候加上一个虚拟头节点就可以减少许多对于head头节点的讨论

class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(head==NULL)return  NULL;
        //先构建一个虚拟头节点 然后用一个p指针去更新
        ListNode* dummy=new ListNode(-1);
        dummy->next=head;
        ListNode* p=head->next;
        while(p!=NULL){
            //反转两个节点
            head->next=p->next;
            p->next=dummy->next;
            dummy->next=p;
            p=head->next;
        }
        return dummy->next;
    }
};
posted @   BailanZ  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示