对此链接列表实现进行一些澄清

时间:2019-06-23 09:59:07

标签: java linked-list

我尝试使用以下代码在Java中实现单链列表。我编写了这样的代码,以便用户输入任意数量的数字,最后,当他点击键盘程序上的Enter键时,将显示他输入的所有数字。

例如,如果用户输入了12345548963256987451236589745之类的内容,那么回车应生成此结果“ 12345548963256956987451236589745”。

我知道我可以简单地使用String或BigInteger来做到这一点,但我只想尝试使用链接列表来进行此操作。

private func handleLogoutCellTap() {
    logoutUseCase?.logout() { [weak self] (result) in
        guard let self = self else { return }
        DispatchQueue.main.async { //here.....
            switch result {
                //rest of the code....
            }
        }
    }
}

由于某种原因,程序将进入无限循环。我的意思是说它永远不会脱离输入部分。

我想我把这一行弄乱了:                     ch.charAt(0)!='\ n'

那我应该改变什么?

最初,我使用C语言进行了尝试,并尝试在JAVA中进行模拟,但在C语言中却有效,但是在JAVA中却遇到了麻烦。

2 个答案:

答案 0 :(得分:0)

如果您真的想逐个字符地进行搜索,可以执行以下操作。

请注意,in.next()将仅使用忽略'/ n'的字符,因此,如果空白行(按下'/ n')行长为零,则应使用in.nextLine()。

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String line = in.nextLine();
        int iter = 0;
        while (iter < line.length()) {

            // Node logic

            iter++;
            if(iter == line.length()){
                iter = 0;
                line = in.nextLine();
            }
        }
    }

答案 1 :(得分:0)

在此示例中,没有必要使用Scanner。您可以直接从System.in(使用InputStream::read()方法)读取字节,并在收到非数字字符后立即停止。

package misc;

import java.io.IOException;

public class Node {
    private int data;
    private Node next;

    public static void main(String[] args) throws IOException {
        Node start = null, end = null;
        int ch;
        while(Character.isDigit(ch = System.in.read())) { // or: while((ch = System.in.read()) != '\r') {
            Node n = insert(ch - 48);
            if (start == null) {
                start = n;
                end = n;
            } else {
                end.next = n;
                end = n;
            }
        }

        Node n = start;
        while (n != null) {
            System.out.print(n.data);
            n = n.next;
        }
    }

    private static Node insert(int i) {
        Node n = new Node();
        n.data = i;
        n.next = null;
        return n;
    }
}

示例输入: “ 12345”

示例输出: 12345