【发布时间】:2023-04-07 17:19:01
【问题描述】:
我知道这并不复杂,但由于某种原因我无法弄清楚。
我正在尝试将一个元素插入到双向链表中,并保持所有内容排序。 我查找了几个与此类似的不同问题,但似乎没有一个完全相同。
简单地说,如果我有一个双向链表: 3 4 5 7 8
插入中间(6): 3 4 5 6 7 8
public void insert(IndexRecord newRec){
Node newNode = new Node(newRec);
Node curNode = front;
if (isEmpty()){ //Empty list
front = newNode;
}else if (front.getNext() == null){ //One element in list
newNode.setPrev(front);
front.setNext(newNode);
back = newNode;
back.setPrev(front);
}else if (back.compareTo(newNode) < 0){ //New node is greater than back
back.setNext(newNode);
newNode.setPrev(back);
back.getPrev().setNext(newNode);
back = newNode;
}else{ //New node is in between two others
while (curNode != null){
if (newNode.compareTo(curNode) < 0){
curNode = curNode.getNext();
}else{
break;
}
}
newNode.setNext(curNode);
newNode.setPrev(curNode.getPrev());
curNode.getPrev().setNext(newNode);
curNode.setPrev(newNode);
}
}
它只是在 curNode.getNext().setPrev(newNode()); 行上给了我一个 NPE但是如果我在我的 while 循环条件中检查它怎么会发生呢?
【问题讨论】:
-
我们能看到完整的堆栈跟踪吗?此外,异常报告给出的行号并不总是正确的,因此可能不是正确的行。
-
@tbodt:他们什么时候不正确?
-
在 COSC311Driver.main(COSC311Driver.java: 48)
-
一旦
curNode.getNext()是null...,循环就会终止 -
第 43 行就是我说的那一行
标签: java insert linked-list sorted