宝玛科技网
您的当前位置:首页leetcode Reverse Linked List II

leetcode Reverse Linked List II

来源:宝玛科技网

代码

class Solution {
public:
    ListNode *reverseBetween(ListNode *head, int m, int n) {
        
        if(head==NULL|m==n)
            return head;
        
        ListNode *newHead, *pre, *p, *tail;
        newHead = new ListNode(0);
        
        newHead->next = head;
        pre = newHead;
        p = head;
        
        int i = 1;
        while(p!=NULL&&i<m)
        {
            ++i;
            pre = p;
            p = p->next;
        }
        
        while(p!=NULL&&i<n)
        {
            ++i;
            p = p->next;
        }
        
        tail = p->next;
      
        ListNode *last = pre->next;
        ListNode *cur = pre->next->next;
        
        while(cur!=tail)
        {
            ListNode *tmp = cur->next;
            cur->next = pre->next;
            pre->next = cur;
            cur = tmp;
        }
        
        last->next = tail;
        
        return newHead->next;
        
    }
};

因篇幅问题不能全部显示,请点此查看更多更全内容