как заголовок говорит, я хочу сравнить 2 связанных списка (Готово и работа), и я хочу удалить узлы с одинаковыми значениями ТОЛЬКО В СПИСОКЕ 2 .. Я написал код и попробовал его он работает в конкретных случаях, но я не могу понять, что с ним происходит (давая неправильные результаты). идея, которую я использовал, - это привязать LinkedList к узлу, сравнивая его со всеми узлами в другом списке, а затем удалять, когда он находит, что они равны.Удаление узла с одинаковыми данными в 2 LinkedLists
Вот удаления кода головы:
public void deleteHead() {
if (head != null) {
head = head.getNext();
}
}
и вот CompareTo Код:
public int compareTo(NodeData nd) {
if (num == nd.getNum()) {
return 0;
}
if (num != nd.getNum()) {
return -1;
}
return 1;
}
И это метод удаления
public void delete(LinkedList LL) {
Node curr = head;
Node curr2 = LL.head;
while (curr2 != null) { //To traverse LL when list1 is done traversing
while (curr != null) { //traverse list1 while checking for common Nodes to delete
if (curr2.getData().compareTo(curr.getData()) == 0) { //compare data in the Nodes
System.out.println(curr2.getData().getNum() + " FOUND, WILL BE DELETED");
deleteHead(); //delete the current node of list1
curr = curr.getNext();
break;
}
else if (curr2.getData().compareTo(curr.getData()) == -1){
System.out.println(curr2.getData().getNum() + " Doesn't Match");}
curr = curr.getNext(); //next node in list1
}
curr2 = curr2.getNext(); //next node in LL
}
}
я попытался с простой выход:
это здорово иметь код, но вы можете дать пример того, что происходит не так, кроме ссылки? –
Я только что отредактировал инструкцию if, чтобы проверить и ответить снова. –
он дважды проверяет один и тот же узел, удаляя голову (просто знал, что мне нужно сделать другой метод для текущего узла), а комментарий ниже также является проблемой (итерацией) @MartinSerrano –