gpt4 book ai didi

java - 双向链表——去除方法

转载 作者:行者123 更新时间:2023-11-29 08:08:23 25 4
gpt4 key购买 nike

我也在尝试通过用户输入的索引删除双向链表中的节点。这对我来说似乎很有意义,但是在“删除节点”并重新打印列表的内容之后,没有任何改变。我确定我错过了一些愚蠢的事情。有什么建议吗?

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();
}

最佳答案

如果不查看整个代码,就不可能查明确切的问题。

不过,我会给你一些建议:

1.

... temp.getIndex() != selection ...

链表中的元素跟踪自己的索引通常不是一个好主意。为了保持索引正确,每次插入或删除都需要遍历列表以更新索引。

2.

    else if (selection == size()){

这里可能存在差一错误。

3.

        temp.setPrev(null);
temp.setNext(null);
temp.getPrev().setNext(null);

最后一行保证抛出一个NullPointerException

一旦您解决了这些问题,我建议您在调试器中逐步执行您的程序,以查看实际发生的情况是否是您期望在每一步发生的情况。

关于java - 双向链表——去除方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9583702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com