您的位置:首页 > Web前端 > Node.js

LeetCode--Reverse Nodes in k-Group

2015-03-06 19:48 381 查看
/**
* 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单 步调试过了,指针很蛋疼
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: