Java 将节点添加到列表中。目前,我无法添加第二个节点。
这看起来很像家庭作业,所以我不会在这里放任何代码,但在else语句中,您将找到新节点的插入点,并将新节点的next to指向列表的其余部分,但是您实际上并没有在任何时候将新节点放入列表中。假设您有一个单节点列表Java 将节点添加到列表中。目前,我无法添加第二个节点。,java,linked-list,custom-lists,Java,Linked List,Custom Lists,这看起来很像家庭作业,所以我不会在这里放任何代码,但在else语句中,您将找到新节点的插入点,并将新节点的next to指向列表的其余部分,但是您实际上并没有在任何时候将新节点放入列表中。假设您有一个单节点列表[HEAD]>null。现在将执行以下行: public void addNode(Car newCarEntry){ ListNode currentNode; ListNode newNode = new ListNode(newCarEntry); if (
[HEAD]>null
。现在将执行以下行:
public void addNode(Car newCarEntry){
ListNode currentNode;
ListNode newNode = new ListNode(newCarEntry);
if (head == null || newCarEntry.isNewerThan(head.carItem)){
newNode.next = head;
head = newNode;
}else{
currentNode = head.next;
while(currentNode != null && !newCarEntry.isNewerThan(currentNode.carItem) ){
currentNode = currentNode.next;
}
currentNode.next = newNode.next;
currentNode = newNode;
}
numberOfNodes++;
}
因此,当您尝试添加第二个节点时,它将给您一个空指针异常(访问currentNode.next
)
编辑后:现在将不再出现空指针异常。相反,会发生以下情况:
currentNode = head.next; // => null
while(currentNode.next != null && !newCarEntry.isNewerThan(currentNode.carItem) ){
...
}
您只更改局部变量
newNode
,而根本不更改列表或标题。请编辑您的问题,使用更合理的标题,并给出更清晰的描述。有关更多建议,请参阅。当您尝试调试程序时,会看到什么?newNode.next=currentNode;newNode=currentNode代码>我通常会看到第一个节点被添加两次,而不是第二个节点被添加。这是一个库存程序。该列表将汽车添加到回转台。不是为了家庭作业,我的CS课程还没有考虑我如何设计链表,我是CS一年级的学生。因此,我的问题与指针,我无法正确地实现一个链表。这就是我来stackoverflow的原因。。。希望我能通过使用else语句来抽象在第一个节点之后添加节点的过程,快速获得一个关于如何将节点添加到此列表的教程。如果不是为了家庭作业,为什么要编写自己的链接列表?我需要使用多个属性、汽车里程、make和model对节点进行排序。也许您可以查看or接口,以便诚实地使用,除了编写自己的列表类之外,我建议基本上什么都可以。此时,它应该跳过while循环并添加节点。K我编辑了它,因此它将添加指向列表的从newNode到currentNode的指针。
currentNode = head.next; // => null
while(currentNode != null && ...) { // => not entering loop
...
}
newNode.next = currentNode; // => i.e. null
newNode = currentNode; // => i.e. null