我的目标是制作一个链接列表,其中每个链接都是一个字符。我希望它接受一个字符串作为参数,采用第一个字母并将其转换为字符,然后将字符串的其余部分传递到下一个链接,直到存储了整个字符串。到目前为止,这是我所拥有的,尽管我不确定是哪个部分正确或不正确。我查看了很多示例,这似乎是默认设置。

public class linkedChar{

    char data;
    linkedChar head;
    linkedChar next;

    //This is the empty link constructor
    public linkedChar(){
        next = null;
    }
    //This is the constructor that takes a string
    public linkedChar(String input){
        if(input.length() > 0){
            data = input.charAt(0);
            next = new linkedChar(input.substring(1));
        }
    }
}


这段代码可以编译,但是不能与我的其他操作方法一起使用。例如,我的长度方法。

public int length(){
    int length = 0;
    linkedChar curr = head;
    while(curr != null){
        curr = curr.next;
        length++;
    }
    return length;
}


使用时,返回的长度始终为0。我不确定代码的哪一部分有错误,并且我不知道如何解决。任何帮助将是巨大的,谢谢。

最佳答案

在构造函数中,您永远不会将head初始化为任何内容,因此在您的length方法中,当您将linkedChar curr = head;设置为curr时,会将length设置为null,因此不会在while循环中递增。

10-04 18:04