【发布时间】:2015-12-10 22:27:47
【问题描述】:
您好,我似乎无法将自定义节点添加到链接列表的后面。自定义节点称为ListNode,链表称为AddressList。
我的程序没有崩溃或抛出任何异常,但它没有在我的AddressList 末尾添加ListNode。我的addToFront 方法有效,但我的addToBack 方法无效。我只需要有人看看我的addToBack 方法,看看我哪里出错了。
我还必须递归地执行此操作。每个ListNode 都有一些值(name、telephoneNum、email、address、dob)还有一个Next 值,它是一个ListNode,应该指向下一个ListNode在AddressList。
这是我的代码:
public ListNode(String name, String telephoneNum, String email, String address, String dob) {
this.name = name;
this.telephoneNum = telephoneNum;
this.email = email;
this.address = address;
this.dob = dob;
}
public ListNode getNext() {
return next;
}
public void setNext(ListNode link) {
next = link;
}
上面的代码部分是ListNode 的构造函数以及在AddressList 中获取和设置下一个链接的方法。
public void addToBack(String name, String telephoneNum, String email, String address, String dob) {
/*Base case.*/
/*If the next node in the AddressList is null add the ListNode to that node.*/
if(currentNode.getNext() == null) {
currentNode = currentNode.getNext();
currentNode = new ListNode(name, telephoneNum, email, address, dob);
}
/*Recursive case.*/
/*If the AddressList still has nodes after the currentNode, keep going.*/
else {
currentNode = currentNode.getNext();
addToBack(name, telephoneNum, email, address, dob);
}
currentNode = head;
}
以上是我的addToBack 方法。我只是不明白为什么我的程序没有抛出异常或将ListNode 添加到AddressList 的后面。任何反馈将不胜感激。
【问题讨论】:
-
您没有在任何地方将新节点设置为下一个节点。所以节点之间没有链接。更多地关注你的空检查块
-
什么是
currentNode。在您的问题中,您没有谈论那条信息:通常链接列表仅具有对第一个节点(head)的引用。看起来好像您在类的状态中使用了 continuation-state。这可能会成为有问题的设计。
标签: java recursion linked-list