代码改变世界

leetcode -Reverse Linked List II

2013-11-25 22:24  张汉生  阅读(171)  评论(0编辑  收藏  举报

 

 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 };