Станислав Станиславович, до экзамена меньше 2-х недель .Хотелось бы узнать, когда будет выложена программа? И ещё такой момент: нельзя ли перезалить презентации с учётом изменений, внесённых во время лекций?
Ссылка на папку с обновлёнными лекциями: https://drive.google.com/drive/folders/1bcJ4Fdx2JBlq6A1RXPZiKjPQp7kfxZyG?usp=sharing
Принимаю ошибки в презентациях
Программа экзамена: https://drive.google.com/file/d/1Tby1KRs0dtxMU44RQpF2lGU2DjrADMcK/view?usp=drivesdk
Принимаю замечания
Спасибо. Исправил.
Возник вопрос насчёт AddFirst для двусвязного списка. В презентации приведён вот этот код:
public void AddFirst(T x)
{
var p = new Node<T>(x, null, First);
if (First != null)
First.Prev = p;
First = p;
if (Last == null)
Last = p;
}
Нельзя ли реализовать данный метод по-другому, с одним if-ом? Ведь First и Last могут быть равны null только одновременно, в том случае, когда в списке нет ни одного элемента.
public void AddFirst(T x)
{
var p = new Node<T>(x, null, First);
if (First == null)
Last = p;
else
First.Prev = p;
First = p;
}
По первому вопросу - да, можно
По второму вопросу - да, там много ошибок в презентации. Исправил на работающий код. Проверяйте
Спасибо, работает
Исправил. Спасибо.
Исправил
И ещё вопрос: нас слайде про Ханойские башни указано число перекладываний дисков - 2^n -1. А число рекурсивных вызовов будет просто 2^n? Ведь при n=1 у нас 2 рекурсивных вызова, при n=2 2*2 рекурсивных вызова и т.д.
Подскажите, пожалуйста, для чего так сделано? Это опечатка или для какой-то дополнительной информации? Если второе, то почему мы не делаем этого для Remove?
И еще, что это? Конструктор или что-то другое?
Это конструктор
Это скопировано из метаданных. Возвращается узел, который мы создали и добавили. Видимо, чтобы с него можно было в списке продолжать делать какие-то действия.
Когда узел удален, ссылка на него уже не нужна. Видимо, такая логика.
Да, там ошибка - должно быть n-1
Давайте считать число вызовов рекурсивной функции. Оно очевидно равно числу перекладываний, т.е. 2^n-1
Но ведь когда мы вызываем Hanoi(1) (при n=1) Hanoi(0) вызывается два раза внутри своего же тела, т.е. число рекурсивных вызовов равно 2^1=2, а не 2^1-1 = 1, разве нет?