我正在尝试为班级作业实现双链表。 我目前坚持实现一种方法来删除指定索引处的节点。
public void remove(int index) {
if (index < 0 || index > count-1) {
throw new ListIndexOutOfBoundsException("The index "+index+" is out of bounds.");
}
if (isEmpty()) {
System.out.println("List is empty");
return;
}
MedicationNode curr = head;
int k = 0;
while(k < index) {
curr = curr.next;
k++;
}
if (curr.prev == null) {
curr.next.prev = null;
}else if(curr.next == null) {
curr = curr.prev;
curr.next = null;
}else{
curr.next.prev = curr.prev;
curr.prev.next = curr.next;
}
count--;
}
该方法可以删除链表中除索引 0 之外的任何指定节点。 我认为问题可能出在我的添加方法上,但我不太确定。
在你的第一个 if 条件下 -
if (curr.prev == null) {
curr.next.prev = null;
//Make your head of the linked list point to this node
head = curr.next;
}
这是因为您要从列表中删除头部,因此头部应指向头部的下一个节点。