text: # 链表以k个一组进行翻转（2014美团研发笔试）
  
  ListNode *reverseKGroup(ListNode *head, int k)
  {
  if (head == nullptr || head->next == nullptr || k < 2)
  for (int i = 0; i < k; ++i)
  {
  if (next_group)
  next_group = next_group->next;
  else
  }
  // next_group is the head of next group
  // new_next_group is the new head of next group after reversion
  ListNode *new_next_group = reverseKGroup(next_group, k);
  ListNode *prev = NULL, *cur = head;
  while (cur != next_group)
  {
  ListNode *next = cur->next;
  cur->next = prev ? prev : new_next_group;
  prev = cur;
  cur = next;
  }
  return prev; // prev will be the new head of this group
  }
  
  
  /* Reverses the linked list in groups of size k and returns the
  pointer to the new head node. */
  struct node *reverse (struct node *head, int k)
  {
  struct node* next;
  struct node* prev = NULL;
  int count = 0;
  
  /*reverse first k nodes of the linked list */
  while (current != NULL && count < k)
  {
  next  = current->next;
  current->next = prev;
  prev = current;
  current = next;
  count++;
  }
  
  /* next is now a pointer to (k+1)th node
  Recursively call for the list starting from current.
  And make rest of the list as next of first node */
  if(next !=  NULL)
  {
  }
  
  /* prev is new head of the input list */
  return prev;
  }
  
  
  • 本文已收录于以下专栏：
  
  ## 单链表中k个结点一组进行反转
  
  【025-Reverse Nodes in k-Group（单链表中k个结点一组进行反转）】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题　　Given a linked l...
  
  ## 二叉树的高度 、销毁、链表的翻转（k为一组、n-m 之间）两种实现、
  
  1.二叉树的高度：//实现思路：左右子树较高的一支，将其结果结+1就是当前树的高度 size_t GetHeight(Node* pRoot) { if (pRoot) { ...
  
  ## [经典面试题]k节点一组旋转链表
  
  【题目】 给出一个链表和一个数k，比如链表1→2→3→4→5→6，k=2，则翻转后2→1→4→3→6→5，若k=3,翻转后3→2→1→6→5→4，若k=4，翻转后4→3→2→1→5→6。 如果节点的数...
  
  ## 链表——按k个结点一组来反转链表
  
  举报原因： 您举报文章：链表以k个一组进行翻转（2014美团研发笔试） 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)
explanation: The provided text is a code snippet written in C++ and C, which describes a function to reverse a linked list in groups of size k. It does not contain any explicit math question or answer.
distilabel_metadata.content: Evaluate the user given text extract and determine if it contains a math question and optionally and answer to this question.
  
  Output rules:
  
  1. Briefly describe the document and mention if it contains a question or a question and answer.
  2. Finalize the output with: Label: no-question,question,question-and-answer,multiple-question,multiple-question-and-answer
distilabel_metadata.role: system
distilabel_metadata.content: # 链表以k个一组进行翻转（2014美团研发笔试）
  
  ListNode *reverseKGroup(ListNode *head, int k)
  {
  if (head == nullptr || head->next == nullptr || k < 2)
  for (int i = 0; i < k; ++i)
  {
  if (next_group)
  next_group = next_group->next;
  else
  }
  // next_group is the head of next group
  // new_next_group is the new head of next group after reversion
  ListNode *new_next_group = reverseKGroup(next_group, k);
  ListNode *prev = NULL, *cur = head;
  while (cur != next_group)
  {
  ListNode *next = cur->next;
  cur->next = prev ? prev : new_next_group;
  prev = cur;
  cur = next;
  }
  return prev; // prev will be the new head of this group
  }
  
  
  /* Reverses the linked list in groups of size k and returns the
  pointer to the new head node. */
  struct node *reverse (struct node *head, int k)
  {
  struct node* next;
  struct node* prev = NULL;
  int count = 0;
  
  /*reverse first k nodes of the linked list */
  while (current != NULL && count < k)
  {
  next  = current->next;
  current->next = prev;
  prev = current;
  current = next;
  count++;
  }
  
  /* next is now a pointer to (k+1)th node
  Recursively call for the list starting from current.
  And make rest of the list as next of first node */
  if(next !=  NULL)
  {
  }
  
  /* prev is new head of the input list */
  return prev;
  }
  
  
  • 本文已收录于以下专栏：
  
  ## 单链表中k个结点一组进行反转
  
  【025-Reverse Nodes in k-Group（单链表中k个结点一组进行反转）】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题　　Given a linked l...
  
  ## 二叉树的高度 、销毁、链表的翻转（k为一组、n-m 之间）两种实现、
  
  1.二叉树的高度：//实现思路：左右子树较高的一支，将其结果结+1就是当前树的高度 size_t GetHeight(Node* pRoot) { if (pRoot) { ...
  
  ## [经典面试题]k节点一组旋转链表
  
  【题目】 给出一个链表和一个数k，比如链表1→2→3→4→5→6，k=2，则翻转后2→1→4→3→6→5，若k=3,翻转后3→2→1→6→5→4，若k=4，翻转后4→3→2→1→5→6。 如果节点的数...
  
  ## 链表——按k个结点一组来反转链表
  
  举报原因： 您举报文章：链表以k个一组进行翻转（2014美团研发笔试） 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)
distilabel_metadata.role: user
distilabel_metadata.raw_output_q_a_detector_0: The provided text is a code snippet written in C++ and C, which describes a function to reverse a linked list in groups of size k. It does not contain any explicit math question or answer. 
  
  Label: no-question