Wie implementiert man eine doppelt verkettete Liste in PHP?

8

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.

    
Xin Qian Ch'ang 12.12.2011, 03:21
quelle

2 Antworten

12

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.

    
jprofitt 12.12.2011, 03:26
quelle
2

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.

    
Levi Morrison 12.12.2011 03:42
quelle

Tags und Links