【发布时间】:2019-12-01 12:33:14
【问题描述】:
我正在开发一个将节点附加到链表末尾的项目。但是,我不能在列表中添加两次相同的节点,并且当我添加与之前相同的节点时,节点自然会增加,并且我没有收到说明该节点已经存在的消息。这是代码
public int append(int item) {
ItemNode node = new ItemNode(item);
if (this.empty()) {
first = node;
last = node;
nbNodes++;
} else if (node == findNode(item)) {
System.out.println("Node already exists");
} else {
last.next = node;
last = node;
nbNodes++;
}
return nbNodes;
}
private ItemNode findNode(int key) {
if (this.empty()) {
return null;
} else {
ItemNode current = this.first;
while (current.item != key) {
if (current.next == null) {
return null;
} else {
current = current.next;
}
}
return current;
}
}
【问题讨论】:
-
node==findNode(item)- 这是错误的。您应该在您的ItemNode类中使用equals()并覆盖equals()。 -
只要检查它是否不为空,if(findNoe(item) != null) { ...}
-
我不想只检查它是否为空我想检查一个节点是否已经存在
-
这可能对你有帮助 - stackoverflow.com/questions/13387742/…
-
我早发现了