反转链表2
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。
说明:
1 ≤ m ≤ n ≤ 链表长度。
示例:
输入: 1->2->3->4->5->NULL, m = 2, n = 4
输出: 1->4->3->2->5->NULL
思路·
class Solution {
public:
ListNode* reverseBetween(ListNode* head, int m, int n) {
ListNode*Node=head;
ListNode*left=NULL;
ListNode*right=NULL;
ListNode*left0,*Node0;
int a=1;
while(Node!=NULL&&a<=n)
{
if(a==m)
{
left0=left;
Node0=Node;
}
if(a>m&&a<=n)
{
right=Node->next;
Node->next=left;
left=Node;
Node=right;
}
else{
left=Node;
Node=Node->next;
}
++a;
}
if(left0==NULL) head=left;
else left0->next=left;
Node0->next=Node;
return head;
}
};