[leetcode] Reverse Linked List II

来源:互联网 发布:手机分贝测试软件 编辑:程序博客网 时间:2024/05/17 07:30

Reverse Linked List II

指针倒向法

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode *reverseBetween(ListNode *head, int m, int n) {        if(head==nullptr){            return nullptr;        }        ListNode *before,*start,*end,*after;        before=after=start=end=nullptr;//初始化        ListNode *ptr=head;                for(int i=1;i<m;++i){            before=ptr;            ptr=ptr->next;        }//ptr指向第m个元素,before指向第m-1个元素(从1开始计数)                start=end=ptr;        //ptr=ptr->next;                for(int i=m;i<=n;++i){            after=ptr->next;            ptr->next=end;            end=ptr;            ptr=after;        }        if(before==nullptr){//m=1时            head=end;        }else{            before->next=end;        }        start->next=after;        return head;    }};


0 0
原创粉丝点击