Ich habe am Freitag eine Interviewfrage bekommen, und ich glaube, ich habe es durchgefallen. Die Frage war:
Schreiben Sie eine Klasse, die eine doppelt verkettete Liste in PHP verarbeitet.
Ich verstehe das Konzept, und hier ist der Code, den ich gab:
%Vor%Das funktioniert zunächst, aber wenn ich ein zweites Element hinzufüge, "verliere" ich das erste und verstehe nicht warum.
Sie müssen $prev
und $next
auf der element
s verfolgen, nicht die Liste. Wenn du es transparent machen willst, kannst du jede element
in eine Bean einbinden, die Zeiger auf die nächste und die vorherige hat, oder definiere einfach element
per definitionem.
Wie du es gerade machst, die Liste wird nur wissen, welches das aktuelle element
ist und welches vorher kam. Aber was Sie wirklich tun sollten, ist herauszufinden, aus der element
(oder Bean), welche die nächste oder vorherige sein wird.
Bearbeiten
Da diese Frage gelegentlich zur Sprache kommt, dachte ich, ich würde etwas Code hinzufügen, um das besser zu erklären.
%Vor%Natürlich gibt es andere Methoden, die Sie hinzufügen könnten; und wenn jemand an denen interessiert ist, kann ich sie auch hinzufügen.
Die richtige Antwort lautet: Entschuldigung, nein. Es wurde bereits gemacht und ist in der PHP-Standardbibliothek enthalten. Ссылка
Außerdem sollte Ihre Add-Funktion kein Element enthalten. Es sollte nur $list->add('a');
sein. Sie stellen Ihre Implementierung zu sehr dar.
Tags und Links php linked-list