reverse-linked-list-ii

来源:互联网 发布:java中super是什么意思 编辑:程序博客网 时间:2024/06/08 05:30

题目:

Reverse a linked list from position m to n. Do it in-place and in one-pass.
For example:
Given1->2->3->4->5->NULL, m = 2 and n = 4,
return1->4->3->2->5->NULL.
Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.

程序:

class Solution {public:         ListNode *reverseBetween(ListNode *head, int m, int n)    {            ListNode *fake = new ListNode(0);        fake->next = head;        ListNode *p = fake;                 for(int i=0;i<m-1;i++)            p = p->next;        ListNode *firstTail = p,*secondTail = p->next;                 ListNode *pre = nullptr,*node = secondTail;        for(int i=0;i<n-m+1;i++)         {            ListNode *temp = node->next;            node->next = pre;            pre = node;            node = temp;         }         firstTail->next = pre;         secondTail->next = node;                 return fake->next;    }};