nodes * KReverse(nodes* head, int k) { int n = k; nodes *new_next = head; nodes *new_head = head; while(n-- > 1) new_head = new_head->next; while(head) { n = k; int count = 0; while(n-- >0 && new_next->next != NULL) { new_next = new_next->next; count++; } if(count < k) new_next = NULL; kreverse(head, k); n = k; nodes * temp = new_next; while(n-- > 1 && temp != NULL && temp->next != NULL) temp = temp->next; head->next = temp; head = new_next; } return new_head; }
void kitoa(int n, char s[]) { int i, sign; if ((sign = n) < 0) /* record sign */ n = -n; /* make n positive */ i = 0; do { /* generate digits in reverse order */ s[i++] = n % 10 + '0'; /* get next digit */ } while ((n /= 10) > 0); /* delete it */ if (sign < 0) s[i++] = '-'; s[i] = '\0'; kreverse(s); }