剑指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 @ 2022-04-27 09:49  BailanZ  阅读(17)  评论(0编辑  收藏  举报