Алгоритмическое мышление при решении задач (на примере языка C#). Шамшев А.Б - 81 стр.

UptoLike

Составители: 

81
Так же очевидна верность следующей замены, потому что если список
пуст, то head равно null, а значит null можно заменить на head:
public void addToHead(int newData) {
if (isEmpty()) {
head = new ListNode(newData, head);
} else {
head = new ListNode(newData, head);
}
}
И тогда очевидно, что в head записывается одинаковое значение в обоих
ветвях if. Поэтому можно сократить объем исходного кода
public void addToHead(int newData) {
head = new ListNode(newData, head);
}
Теперь рассмотрим добавление в хвост. Для того, что бы лучше его понять,
предположим, что оно написано и уже добавилось несколько элементов.
И пусть односвязанный список имеет следующий вид:
И мы добавляем в хвост новый элемент со значением 4. После добавления
этого значения список примет следующий вид:
Возникает вопрос, как это реализовать? Для того, что бы добавить
четверку после тройки (а вернее элемента со значением три), мы должны найти
тройку. При этом head не должна меняться (и до и после добавления она
указывает на единицу). А значит надо ввести новую переменную, для примера
curNode.