首页 > 代码库 > Leetcode Reverse Linked List II

Leetcode Reverse Linked List II

Reverse a linked list from position m to n. Do it in-place and in one-pass.

For example:
Given 1->2->3->4->5->NULLm = 2 and n = 4,

return 1->4->3->2->5->NULL.

Note:
Given mn satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.

ListNode *reverseBetween(ListNode *head, int m, int n) {    ListNode *newHead = new ListNode(-1);    newHead->next = head;    ListNode *p = head, *pre = newHead;    int cnt = 0;    while(cnt < m-1) {pre = p;p=p->next;cnt++;}    ListNode *q = p;    p=p->next;cnt++;    while(cnt< n){        ListNode *node = p->next;        p->next=pre->next;        pre->next = p;        p = node;        q->next = node;        cnt++;    }    return newHead->next;}