【发布时间】:2015-04-06 19:46:01
【问题描述】:
我正在尝试构建如下所示的链表:
**list-> [C] - [B] - [A] -> NULL**
这是我的主要内容:
import java.util.*;
class LinkedListF
{
public static void main (String [] args)
{
Node aNode = new Node ("A", null);
Node bNode = new Node ("B", aNode);
Node list = new Node ("C",bNode);
DynamicList dynamicList = new DynamicList();
dynamicList.insertFirst("A");
dynamicList.insertFirst("C");
dynamicList.insertAfter(list, "B");
//the line above is where I am struggling with.
System.out.println(dynamicList.getList().getInfo());
System.out.println(dynamicList.getList().getNext().getInfo());
System.out.println(dynamicList.getList().getNext().getNext().getInfo());
}
}
正如我在代码中标记的那样,我现在遇到的问题是,当代码“dynamicList.insertAfter(list, "B")”运行时,它没有在我构造的动态列表中的节点“列表”之后插入“B”。我对这里发生的事情感到非常困惑。
我的输出如下所示:
----jGRASP exec: java LinkedListF
C
A
Exception in thread "main" java.lang.NullPointerException
at LinkedListF.main(LinkedListF.java:27)
----jGRASP wedge2: exit code for process is 1.
----jGRASP: operation complete.
第 27 行是我的第三个 System.out.print 语句。
下面是我的 DynamicList 类中的 insertAfter 方法:
public void insertAfter(Node p, String x)
{
if (isEmpty())
{
System.out.println("VOID INSERTION.");
System.exit(1);
}
Node q = new Node (x, p.getNext());
p.setNext(q);
}
下面是我用来构造每个节点的 Node 类:
class Node
{
private String data;
private Node next;
public Node (String data, Node next)
{
this.data = data;
this.next = next;
}
String getInfo()
{
return data;
}
Node getNext()
{
return next;
}
void setInfo(String data)
{
this.data = data;
}
void setNext(Node next)
{
this.next = next;
}
}
【问题讨论】:
-
“LinkedListF.main(LinkedListF.java:27) 处的 java.lang.NullPointerException”。第 27 行是什么?
-
@Thilo “第 27 行是我的第三个 System.out.print 语句。”
-
你明白
list永远不会被添加到dynamicList,对吧? -
list和insertFirst("C")创建的节点有区别 -
@m0skit0 他在
list之后添加了一个新的“B”节点,但是list从未添加到dynamicList。insertAfter()方法只添加到传递给它的Node,而不添加到DynamicList中已经存在的任何节点。他自己创建了list->"B"->bNode->aNode。dynamicList仅由"C"->"A"组成。
标签: java linked-list jgrasp