# 25. Reverse Nodes in k-Group

``````#include<iostream>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};

class Solution {
public:
ListNode* reverseKGroup(ListNode* head, int k) {
ListNode *p,*L,*tmp,*q;
int length,i;
length=0;
while(p)
{
length++;
p=p->next;
}
L=(ListNode*)malloc(sizeof(struct ListNode));
L->next=NULL;//L是逆转链表
tmp=L;//tmp是临时链表用来存放逆转的k个元素
{
for(i=0;i<k;i++)
{
q->next=tmp->next;
tmp->next=q; //采用头插法逆转元素
}
while(tmp->next)//将tmp清空到最后一个节点好连接下面的k个元素
tmp=tmp->next;
length=length-k;
}
return L->next;
}
};
int main()
{
ListNode* L,*result,*p,*q;
int N,i,temp,k;
Solution solve;
cin>>N;
cin>>k;
L=(ListNode*)malloc(sizeof(struct ListNode));
L->next=NULL;
p=L;
for(i=0;i<N;i++)
{
cin>>temp;
q=(ListNode*)malloc(sizeof(struct ListNode));
q->val=temp;
q->next=NULL;
p->next=q;
p=q;
}
result=solve.reverseKGroup(L->next,k);
while(result)
{
cout<<result->val<<' ';
result=result->next;
}
return 0;
}``````

``````#include<iostream>
#include<stack>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};

class Solution {
public:
ListNode* reverseKGroup(ListNode* head, int k) {
stack<ListNode*> s;
ListNode *L,*start,*end,*q,*tmp;
int count;
L=(ListNode*)malloc(sizeof(ListNode));
L->next=NULL;
tmp=L;
end=start;
while(1)
{
count=k;
while(count&&end)//start和end之间隔了k个元素
{
count--;
s.push(end);
end=end->next;
}
if(!count)
{
while(!s.empty())//采用尾插法插入
{
q=s.top();
s.pop();
tmp->next=q;
tmp=q;
}
start=end;
end=start;
}
else
break;
}
tmp->next=start;
return L->next;
}
};
int main()
{
ListNode* L,*result,*p,*q;
int N,i,temp,k;
Solution solve;
cin>>N;
cin>>k;
L=(ListNode*)malloc(sizeof(struct ListNode));
L->next=NULL;
p=L;
for(i=0;i<N;i++)
{
cin>>temp;
q=(ListNode*)malloc(sizeof(struct ListNode));
q->val=temp;
q->next=NULL;
p->next=q;
p=q;
}
result=solve.reverseKGroup(L->next,k);
while(result)
{
cout<<result->val<<' ';
result=result->next;
}
return 0;
}``````

• 本文已收录于以下专栏：

## （Java）LeetCode-25. Reverse Nodes in k-Group

Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. ...
• u012848330
• 2016年06月02日 22:06
• 511

## Reverse Nodes in k-Group -- LeetCode

• linhuanmars
• 2014年02月26日 06:27
• 11220

## [LeetCode] 025. Reverse Nodes in k-Group (Hard) (C++/Java)

[LeetCode] 025. Reverse Nodes in k-Group (Hard) (C++/Java)
• hcbbt
• 2015年03月05日 15:04
• 2755

## python写算法题：leetcode: 25. Reverse Nodes in k-Group

https://leetcode.com/problems/reverse-nodes-in-k-group/#/description class Solution(object): ...
• lzf_china
• 2017年06月29日 21:29
• 86

## LeetCode 25: Reverse Nodes in k-Group

Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. I...
• sunao2002002
• 2015年06月08日 20:00
• 3676

## leetcode 25 -- Reverse Nodes in k-Group

Reverse Nodes in k-Group 题目： Given a linked list, reverse the nodes of a linked list k at a tim...
• wwh578867817
• 2015年06月10日 17:06
• 946

## 【Leetcode】【python】Reverse Nodes in k-Group

• qqxx6661
• 2017年09月05日 09:00
• 115

## LeetCode 25 Reverse Nodes in k-Group (C,C++,Java,Python)

Problem: Given a linked list, reverse the nodes of a linked list k at a time and return its mod...
• runningtortoises
• 2015年05月11日 19:55
• 896

## [LeetCode]Reverse Nodes in k-Group, 解题报告

• zinss26914
• 2014年02月08日 15:51
• 1712

## 25. Reverse Nodes in k-Group

• ever223
• 2015年03月15日 11:01
• 303

举报原因： 您举报文章：25. Reverse Nodes in k-Group 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)