1 class Solution {
2 public:
3 ListNode *reverseBetween(ListNode *head, int m, int n) {
4 // IMPORTANT: Please reset any member data you declared, as
5 // the same Solution instance will be reused for each test case.
6 if (n-m<1 || head==NULL)
7 return head;
8 int size = 0;
9 ListNode* ltail =NULL;
10 int i = 0;
11 ListNode * itr = head, * last = NULL, *rhead;
12 while (itr!=NULL){
13 ListNode * next = itr->next;
14 i++;
15 if (i==m){
16 ltail = last;
17 rhead = itr;
18 }
19 if (i>m && i<=n){
20 itr->next = last;
21 }
22 if (i==n){
23 rhead->next = next;
24 if (ltail!=NULL){
25 ltail->next = itr;
26 return head;
27 }
28 else return itr;
29 }
30 last = itr;
31 itr = next;
32 }
33 return NULL;
34 }
35 };