我也试图通过用户输入的索引删除双向链表中的节点。这对我来说似乎很有意义,但是在“删除节点”并重新打印列表的内容之后,什么都没有改变。我敢肯定我错过了一些愚蠢的东西。有什么建议吗?
public void removeEntryNode() {
System.out
.println("We delete by index here. Type in the number you want to delete");
// print list for selection
temp = head;
while (temp != null && temp.getFirstName() != null) {
System.out.print(temp.getIndex() + " " + temp.getFirstName() + " ");
System.out.print(temp.getLastName() + " ");
System.out.println(" ");
temp = temp.getNext();
}
int selection = keyboard.nextInt();
// Gets node matching index with selection and deletes it
// Next two lines loop through list
while (temp != null && temp.getIndex() != selection) {
temp = temp.getNext();
}
// if it is the head
if (selection == 0) {
head = temp.getNext();
temp.getNext().setPrev(null);
temp.setNext(null);
counter--;
}
// if it is the tail
else if (selection == size()) {
tail = temp.getPrev();
temp.setPrev(null);
temp.setNext(null);
temp.getPrev().setNext(null);
counter--;
} else {
temp.getPrev().setNext(temp.getNext());
temp.getNext().setPrev(temp.getPrev());
temp.setNext(null);
temp.setPrev(null);
counter--;
}
System.out.println("Successfully deleted ");
menu();
}