Java将单链表的每K个节点逆序
public static Node reverseKNode(Node head, int k){
if (head == null || head.next == null){
return head;
}
Node curNode = head;
for(int i = 1; curNode != null && i < k; i++){
curNode = curNode.next;
}
if (curNode == null){
return head;
}
Node temp = curNode.next;
curNode.next = null;
Node newHead = reverse(head);
Node newTemp = reverseKNode(temp, k);
Node tempNode = newHead;
for (int i = 1; i < k; i++) {
tempNode = tempNode.next;
}
tempNode.next = newTemp;
return newHead;
}
public static Node reverse(Node head){
if (head == null || head.next == null){
return head;
}
Node newNode = reverse(head.next);
head.next.next = head;
head.next = null;
return newNode;
}