/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *reverseKGroup(ListNode *head, int k) { ListNode *dummy = new ListNode(-1); dummy->next = head; ListNode *begin = dummy; ListNode *end = dummy; ListNode *newhead = new ListNode(-1); ListNode *newtmp = newhead; if( head == NULL || k<=1 ) return head; begin = head; while(begin) { int i=0; end = begin; //begin = end->next; for( i=0; i<k-1; i++) { if(end) end = end->next; else break; } if(i == k-1 && end != NULL) { ListNode *tmp = begin; ListNode *endnext = end->next; while( tmp != endnext ) { ListNode *pnext = tmp->next; tmp->next = newtmp->next; newtmp->next = tmp; tmp = pnext; } newtmp = begin; begin = endnext; } else { newtmp->next = begin; break; } } return newhead->next; } };
两个小时,最后不行了才使用vs2010单 步调试过了,指针很蛋疼