m to n. Do it in-place and in one-pass.
 For example:
 Given 1->2->3->4->5->NULL, m = 2 and n1->4->3->2->5->NULL.
Note:
 Given m, n satisfy the following condition:
1 ≤ m ≤ n
answer:
class Solution {
public:
    ListNode* reverseBetween(ListNode* head, int m, int n) {
        int i = 1;
        ListNode preNode(0);
        ListNode * pre = & preNode, * index = head, * start = head;
        pre->next = head;
        while(i < m){
            pre = index;
            index = index->next;
            i ++;
        }
        start = index;
        while(i < n){
            index = index->next;
            start->next = index->next;
            index->next = pre->next;
            pre->next = index;
            index = start;
            //start = pre->next;
            i ++;
        }
        return preNode.next;
    }
}; 










