java链表复制构造函数

标签 java list linked-list

我在链接列表的构造函数方面遇到问题。它需要一个字符串,并应该为每个字符创建一个节点。

每次尝试打印列表时都会出现空指针异常。这是否意味着甚至没有创建第一个节点?

下面是我的节点类和列表构造函数。

class CharNode { 

   private char letter; 
   private CharNode next; 
   public CharNode(char ch, CharNode link)
    { 
        ch = letter;
        link = next;
    }

   public void setCharacter(char ch) 
    { 
        ch = letter;
    }

   public char getCharacter() 
    { 
    return letter;
    }
   public void setNext(CharNode next) 
    { 
    this.next = next;
    }

   public CharNode getNext() 
    {
    return next;
    }    
} 
<小时/>

这是我的构造函数

   // constructor from a String 
   public CharList(String s) { 

    CharNode newNode = head;

    for(int i = 0; i <s.length(); i++)
    {
        newNode = new CharNode(s.charAt(i), null);
        newNode.setNext(newNode);
    }

    }

我的构造正确吗?

最佳答案

首先,你的属性发生了转变!

ch = letter;
link = next;

应该是

letter = ch;
next = link;

你的 setter 中也有同样的事情。

当 Java 中有以下形式的方法时:

public void setSomething(String argument){
    this.classMember = argument;
}

通常就是你想要的。您必须将您的论点分配给您的类(class)成员,而不是相反。

此外,当您调用构造函数时,您还可以:

newNode = new CharNode(s.charAt(i), null);
newNode.setNext(newNode);

这使得您的“链接”始终指向其自身!想想你需要做什么才能使前一个 Node 指向你刚刚创建的节点(也许以某种方式保存它?)!

我说得够清楚了吗?如果我可以进一步解释,请告诉我。

关于java链表复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7883057/

相关文章:

python - 如何在 python 中创建固定大小列表?

python - 循环遍历一组 Python 数字或一组字母是否更快?

java - 链表。头尾引用

c - 打印链接列表仅打印 C 中最新的数据条目

c - 我的链表中第一个节点中的数据不断更改为列表中的最后一个节点。 C语言

java - 使用 Google 应用程序引擎进行 Spring Bootstrapping

java - 为什么这个 try/catch 方法不起作用?

Java 狮身人面像 "Answers Itself"

java - 使用java向keycloak用户添加客户端角色

android - Realm 的列表属性如何工作?