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

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

相关推荐
Aczone2814 分钟前
嵌入式 数据结构学习 (六) 树、哈希表与内核链表
数据结构·学习·算法
定偶15 分钟前
进制转换小题
c语言·开发语言·数据结构·算法
hnlucky24 分钟前
《Nginx + 双Tomcat实战:域名解析、静态服务与反向代理、负载均衡全指南》
java·linux·服务器·前端·nginx·tomcat·web
hnlucky25 分钟前
同时部署两个不同版本的tomcat要如何配置环境变量
java·服务器·http·tomcat·web
体系结构论文研讨会1 小时前
多项式环及Rq的含义
算法
智驱力人工智能1 小时前
极端高温下的智慧出行:危险检测与救援
人工智能·算法·安全·行为识别·智能巡航·高温预警·高温监测
森焱森1 小时前
60 美元玩转 Li-Fi —— 开源 OpenVLC 平台入门(附 BeagleBone Black 驱动简单解析)
c语言·单片机·算法·架构·开源
yngsqq1 小时前
netdxf—— CAD c#二次开发之(netDxf 处理 DXF 文件)
java·前端·c#
A了LONE1 小时前
h5的底部导航栏模板
java·前端·javascript
经典19922 小时前
spring boot 详解以及原理
java·spring boot·后端