Exemplo n.º 1
0
void reverseAddNodes(TreeNode* start, TreeNode* end, vector<int>& nodes) {
    reverseNodes(start, end);
    TreeNode* node = end;
    while (true) {
        nodes.push_back(node -> val);
        if (node == start) break;
        node = node -> right;
    }
    reverseNodes(end, start);
}
 ListNode* reverseKGroup(ListNode* head, int k)
 {
     int i;
     ListNode hh(0);
     hh.next=head;
     ListNode *p=&hh,*q,*t;
     while(1)
     {
         for(i=0,q=p;i<k&&q!=NULL;i++,q=q->next);
         if(q==NULL)
         {
             break;
         }
         t=p->next;
         reverseNodes(p,q->next);
         p=t;
     }
     return hh.next;
 }