Просмотр моих структур данных, для некоторых новых требований собеседования. Итак, у меня есть метод удаления для Linked-List.
public Link delete(int key) {
Link current = first;
Link previous = first;
while(current.iData != key) {
if(current.next == null)
return null;
else {
previous = current;
current = current.next;
}
}
if(current == first)
first = first.next;
else
// just bypass it
previous.next = current.next;
return current;
}
Я думаю, что до сих пор понимаю. Но мне любопытно в этой строке:
// just bypass it
previous.next = current.next;
Почему бы нам не переопределить head
(в этом примере, представленном как first
) с previous
? Или это была бы неправильная логика? как
// just bypass it
previous.next = current.next;
first=previous;
Я имею в виду previous
и current
- просто указатели для перебора списка. А реальные данные после удаления находятся в first
правильно? Извините, если это было бы странно думать, почему. Иногда моя странная интуиция просто проявляется при изучении алгоритмов, главным образом потому, что я как бы слаб