Связь односвязного списка хранится в next. При вставке сначала сохраните старого преемника в новом узле, затем перенаправьте ссылку предыдущего узла.
Базовые манипуляции с односвязным списком: создание узлов и операции
Связь односвязного списка хранится в next. При вставке сначала сохраните старого преемника в новом узле, затем перенаправьте ссылку предыдущего узла.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Создайте два элемента списка (например, $A и $B). Свяжите их, установив односвязную связь: $A->next = $B.
Реализуйте простейшие операции:
- проверка наличия ссылки между элементами;
- вставка нового элемента (например, $C) между $A и $B;
- разрыв связи между элементами.
Пример кода для начального создания узлов:
$A = new Node();
$A->next = $B
Ответ
Связь односвязного списка хранится в next. При вставке сначала сохраните старого преемника в новом узле, затем перенаправьте ссылку предыдущего узла.
class Node { public ?Node $next = null; }
$A = new Node();
$B = new Node();
$A->next = $B;
$linked = $A->next === $B;
$C = new Node();
$C->next = $A->next;
$A->next = $C;
// Удаляем C из цепочки, сохраняя B:
$A->next = $C->next;
$C->next = null;
// Полностью разрываем связь A с продолжением:
$A->next = null;
Проверка использует идентичность объектов. Удаление ссылки не означает немедленное уничтожение объекта, если на него остаются другие ссылки.