逆序链表
1.不是整个链表,而是一段链表,从m处到n处
2.输入的m和n满足,1 ≤ m ≤ n ≤ length of list
注意:m与n相等时,和m=1与n=length of list的情况
/**
* 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 *ptr = head, *ptrN, *prev, *temp;
int i;
if(m == n)
return head;
for(i = 1; i < m - 1; i ++){
ptr = ptr -> next;
}
ptrN = ptr;
if(m == 1){
prev = NULL;
}else{
prev = ptr;
ptr= ptr -> next;
}
for(i = m; i <= n; i ++){
temp = ptr ->next;
ptr -> next = prev;
prev = ptr;
ptr = temp;
}
if(m == 1){
ptrN -> next = ptr;
return prev;
}else{
ptrN -> next -> next = ptr;
ptrN -> next = prev;
}
return head;
}
};