Проблема заключается в удалении дубликатов из несортированного связанного списка. Использование хеш-набора отслеживает значения, уже находящиеся в наборе.
Я не понимаю, что делает блок if, else. Особенно код, предыдущий = текущий.
Это перезаписывает предыдущий предыдущий?
Я нарисовал несколько диаграмм на доске и не могу понять поток этого кода
public void removeDuplicateFromUnsortedList() {
HashSet<Integer> hs = new HashSet<Integer>();
Node current = head;
Node prev = null;
while(current != null) {
int current_data = current.data;
if(hs.contains(current_data)) {
prev.next = current.next;
}
else {
hs.add(current_data);
prev = current;
}
current = current.next;
}
}
Этожелаемый результат, который работает.
Распечатка: 1 -> 1 -> 4 -> 2 -> 4 -> 2 -> 2 -> ноль
Распечатка: 1 -> 4 -> 2 -> ноль