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

Reverse Nodes in k-Group

2015-07-08 19:20 513 查看
这道题目,我的解法思想与Swap Nodes in Pairs那道题基本上是一样的,只不过在翻转group内节点的时候,我使用了数组栈。我的代码如下:

ListNode* reverseKGroup(ListNode* head, int k) {
int cnt = 0; // 计数
ListNode *sstack[k], *cursor; // 数组栈
ListNode dummy(0), *pre = &dummy, *p = head; // p为待翻转group的第一个节点
pre->next = head; // pre为p之前的节点
while (p) {
cnt = k;
cursor = p;

for (int i=0; i<k; i++) {
if (cursor == NULL) {
return dummy.next;
}
sstack[i] = cursor; // group内节点入栈
cursor = cursor->next;
}

for (int i=k-1; i>=1; i--) { // 翻转group内各节点
sstack[i]->next = sstack[i-1];
}

pre->next = sstack[k-1]; // 一些连接操作
p->next = cursor;
pre = p;
p = p->next;

}
return dummy.next;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: