局部反转:
/**
* 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) {
ListNode* newhead=(ListNode*)malloc(sizeof(ListNode));
newhead->next=head;
ListNode* start=newhead;
int flag=m;
while(m>1)
{
m--;
start=start->next;
}
ListNode *move=start->next;
ListNode *end=move;
int temp=1;
while(n>=flag)
{
n--;
if(temp)
{
temp--;
move=move->next;
}
else
{
end->next=move->next;
move->next=start->next;
start->next=move;
move=end->next;
}
}
return newhead->next;
}
};