Вот это реализация связанного списка. Все нормально, работает. Но меня беспокоит несколько строк (комментарии внутри метода мои):
//insertion at the start of linklist
public function insertFirst($data)
{
$link = new ListNode($data); // create local variable
$link->next = $this->firstNode;
$this->firstNode = &$link; // and remember the reference to it in $this->firstNode
Редактировать:
Позвольте мне проанализировать этот метод построчно:
L1. Мы создаем локальную переменную: $ link.
L2. Не имеет значения
L3. В свойстве firstNode мы сохраняем ссылку на локальную переменную.
ОК, все ясно. Но в конце этого метода локальная переменная ($ link) будет уничтожена. Таким образом, в ‘firstNode’ у нас есть ссылка на несуществующую переменную. Место в памяти, где хранилась переменная $ link, теперь свободно. PHP может хранить там что-то новое. Не так ли?
Задача ещё не решена.
Других решений пока нет …