我在链接列表的构造函数方面遇到问题。它需要一个字符串,并应该为每个字符创建一个节点。
每次尝试打印列表时都会出现空指针异常。这是否意味着甚至没有创建第一个节点?
下面是我的节点类和列表构造函数。
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/