Reversing Linked List

Given a constant K and a singly linked list L, you are supposed to reverse the links of every K elements on L. For example, given L being 1→2→3→4→5→6, if K=3, then you must output 3→2→1→6→5→4; if K=4, you must output 4→3→2→1→5→6.

Input Specification:

Each input file contains one test case. For each case, the first line contains the address of the first node, a positive N (≤105) which is the total number of nodes, and a positive K (≤N) which is the length of the sublist to be reversed. The address of a node is a 5-digit nonnegative integer, and NULL is represented by -1.

Then N lines follow, each describes a node in the format:

复制代码
Address Data Next

where Address is the position of the node, Data is an integer, and Next is the position of the next node.

Output Specification:

For each case, output the resulting ordered linked list. Each node occupies a line, and is printed in the same format as in the input.

Sample Input:

复制代码
00100 6 4
00000 4 99999
00100 1 12309
68237 6 -1
33218 3 00000
99999 5 68237
12309 2 33218

Sample Output:

复制代码
00000 4 33218
33218 3 12309
12309 2 00100
00100 1 99999
99999 5 68237
68237 6 -1

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

java 复制代码
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String startPoint = sc.next();
        int pointNum = sc.nextInt();
        int k = sc.nextInt();
        ArrayList<list> list = new ArrayList<>();
        for (int i = 0; i < pointNum; i++) {
            list.add(new list(sc.next(),sc.nextInt(),sc.next()));
        }
       list.sort(new Comparator<Main.list>() {
           @Override
           public int compare(Main.list o1, Main.list o2) {
               return o1.getData() - o2.getData();
           }
       });
        if (pointNum % k == 0 && k != 1) {

            Collections.reverse(list.subList(0,k));
            Collections.reverse(list.subList(k,pointNum));
            for (int i = 1; i < list.size(); i++) {
                list.get(i - 1).setNextAddress(list.get(i).getAddress());
            }
                list.get(pointNum - 1).setNextAddress("-1");
            for (int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i).toString());
            }
        } else {
            Collections.reverse(list.subList(0,k));
            for (int i = 1; i < list.size(); i++) {
                list.get(i - 1).setNextAddress(list.get(i).getAddress());
            }
            for (int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i).toString());
            }
        }

    }

    static class list {
        String address;
        int data;
        String nextAddress;

        public list(String address, int data, String nextAddress) {
            this.address = address;
            this.data = data;
            this.nextAddress = nextAddress;
        }

        public String getAddress() {
            return address;
        }

        public int getData() {
            return data;
        }

        public String getNextAddress() {
            return nextAddress;
        }

        public void setAddress(String address) {
            this.address = address;
        }

        public void setData(int data) {
            this.data = data;
        }

        public void setNextAddress(String nextAddress) {
            this.nextAddress = nextAddress;
        }

        @Override
        public String toString() {
            return
                    address + ' ' + data + ' ' + nextAddress;
        }
    }
}

求助怎么解决这两个问题 ,感谢!!!

相关推荐
niucloud-admin17 分钟前
NIUCLOUD PHP SAAS上门家政使用文档:服务保障
java·开发语言·php
Dumbness25 分钟前
UIA 读微信群消息没有 id,怎么判断哪条是新的:后缀对齐在翻历史和撤回时整屏重报
python·算法
taka26 分钟前
从 24x 到 141x:我用纯 Python 零依赖项目,扒开了 GPU 加速的性能黑洞
算法
IT枫斗者枫哥30 分钟前
CompletableFuture失败后返回空列表:异常没了,业务含义也变了
java·后端
知识搬运临时工41 分钟前
一个模板把 AEM 拖进 Full GC 死亡螺旋:300% CPU、7 GB 堆、310 万行堆栈
java·aws
用户432935928051 小时前
CoAP还是MQTT:1万只Cat.1水表三个月带宽续航实测
java
知守观1 小时前
多模块架构演进:横向分层 vs 纵向领域,13 个真实项目的切分对照
java·后端·微服务
UIU1141 小时前
P16237 [蓝桥杯 2026 省 B] 应急布线
数据结构·c++·算法·蓝桥杯
旖旎夜光1 小时前
LeetCode 315: 算右侧小于当前元素的个数(归并排序) —— 题解
c++·学习·算法·leetcode·排序算法
Java成神之路-1 小时前
Java String 为什么不可变?和 HashMap 到底有什么关系?
java