描述
将单个链表的每K个节点之间逆序,打印出新链表;最后不足K的节点数不需要逆序;要求时间复杂度为O(n),额外空间复杂度为O(1)。
输入
输入第一行为用例个数, 每个测试用例输入的每一行的值用空格隔开,第一个表示链表长度,中间为节点值,最后代表K。
输出
输出的每一行为新的链表,节点值用空格隔开,末尾不要空格。
输入样例 1
2
8 1 2 3 4 5 6 7 8 3
8 a b c d e f g h 4
输出样例 1
3 2 1 6 5 4 7 8
d c b a h g f e
实现
import java.util.Scanner;
// 链表结点数据结构
class ListNode {
String value;
ListNode next;
ListNode(String value) {
this.value = value;
}
}
public class ReverseListInterval {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int numOfCases = Integer.parseInt(scanner.nextLine());
for (int i = 0; i < numOfCases; i++) {
// 接收输入
String[] input = scanner.nextLine().split(" ");
// 1.建立链表
ListNode first = null;
ListNode current = null;
for