LeetCode——K个一组翻转链表

题目地址:https://leetcode-cn.com/problems/reverse-nodes-in-k-group/

解题思路:增加头结点,通过头结点来实现倒序。

class Solution {
 public:
     ListNode* reverseKGroup(ListNode* head, int k) {
         ListNode* p ,*t,*head_;
         ListNode* q = head;
         ListNode *Head= new ListNode(-1);//增加Head头结点
         Head->next = head;
         int i, num = 0,flag=0;
         p = Head;
         while (p->next) {
             num++;
             p = p->next;
         }
         Head->next = NULL;
         p = Head->next;
         head_ = Head;
         for (i = 1; i <= num && num / k != flag; i++) {
             t = q;
             q = q->next;
             head_->next = t;
             t->next = p;
             p = t;
             if (i%k == 0) {
                 while (head_->next) {
                     head_ = head_->next;
                 }
                 head_->next = NULL;
                 p = head_->next;
                 flag++;
             }
         }
         if (i != num + 1)
             head_->next = q;
         head = Head->next;
         return head;
     }
 };

 

posted @ 2020-10-12 18:45  CCxiao5  阅读(61)  评论(0编辑  收藏  举报