我正在努力在Linked-list的末尾插入一个新元素。问题出现在while循环“NullPointException”中。有人可以帮忙吗?
// Node head = null;
@Override
public void add( T newvalue ) {
Node newNode = new Node (newvalue);
newNode.next = head;
head = newNode;
}
答案 0 :(得分:0)
您的代码不适合添加到链接列表的尾部。链接列表应在当前节点或最后一个节点的END处添加新节点。由于您只显示head是一个节点,并且很可能这是一个单指针节点,让我们假设head指向节点的末尾(您可以将名称更改为tail)。您的代码需要查看最后一个节点(在本例中为head),并向其添加新节点,然后更新对新节点的引用。
// Node head = null;
@Override
public void add( T newvalue ) {
Node newNode = new Node (newvalue); //define new node
if(head !=null){//make sure what you are pointing to exists
head.next = newNode; // set the next point to newNode
head = newNode; //change the reference to your tail (called head here)
} else{
head = newNodel; //if doesn't exist, just point to new node
}
}
这就是你想要的东西。 老实说,你需要一个头节点和一个尾节点。如果头节点始终指向头部,则无法遍历列表。 Head应始终指向第一个节点,tail应指向最后一个节点。首先,head和tail将指向相同的null或1st节点。然后你在添加功能中移动尾部。