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;
        }
    }
}

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

相关推荐
卡提西亚3 分钟前
leetcode-239. 滑动窗口最大值
算法·leetcode·职场和发展
CHANG_THE_WORLD10 分钟前
逐层拆解:C++ 虚函数从对象内存到手工调用的完整过程
java·开发语言·c++
我登哥MVP11 分钟前
走进 Gang of Four 设计模式:过滤器模式
java·设计模式·过滤器模式
吃饱了得干活19 分钟前
实时弹幕应该怎么搞?一篇带你从入门到生产级实战
java·后端
ShallWeL26 分钟前
【机器学习】(20)—— 类别不平衡
人工智能·算法·机器学习
明志数科31 分钟前
具身智能数据标准化:从碎片化接口到统一工作组的技术路径
人工智能·算法·机器学习
tianyuanwo35 分钟前
深入掌握 java -jar 命令:从基础到 Jenkins Agent 实战
java·jenkins·jar
旖-旎41 分钟前
LeetCode 494:目标和(动态规划/01背包问题)—— 题解
c++·算法·leetcode·动态规划·01背包
Full Stack Developme1 小时前
MyBatis-Plus(MP)AST 抽象语法树 设计原理
java·tomcat·mybatis
spssau1 小时前
一文学会结构方程模型:从模型搭建、路径图绘制到不达标调整,实操全流程
人工智能·python·算法