reverse k group
1 ListNode *reverseKGroup(ListNode *head, int k) { 2 // Start typing your C/C++ solution below 3 // DO NOT write int main() function 4 if( k<= 1 || head == NULL) return head; 5 6 ListNode * root = new ListNode( -1 ); 7 root->next = head; 8 ListNode* ptr1 = root; 9 ListNode* ptr2 ; 10 ListNode* tmp, *tmp2,*tmp3; 11 12 int count = 1; 13 while( head != NULL ) 14 { 15 if( count < k ) { 16 head = head -> next ; 17 count ++; 18 continue; 19 } 20 tmp = head->next; 21 22 head = ptr1 -> next; 23 ptr2 = head->next; 24 for( int i=1;i<k;i++) 25 { 26 head -> next = ptr2-> next; 27 ptr2->next = ptr1 -> next; 28 ptr1 -> next = ptr2; 29 30 ptr2 = head->next; 31 32 } 33 ptr1 = head; 34 head = tmp; 35 count = 1; 36 } 37 return root->next; 38 }
posted on 2013-07-03 19:25 jumping_grass 阅读(209) 评论(0) 收藏 举报
浙公网安备 33010602011771号