Aus unerfindlichen Gründen mußte ich mich heute mit PHP und verketteten Listen rumschlagen. Ohne Zeiger und einem Witz von Referenzen war mir das erstmal gar nicht klar, wie ich das zusammengebastelt bekomme. Ich wollte die Geschichte schon mit einem Array faken, nach ein bisschen blättern zu Referenzen in den PHP Online Dokumentationen, hab ich aber doch noch eine recht simple Methode gefunden. Zum Nachvollziehen habe ich hier nur in eine einfachen Version hineingetippt. Es geht vor allem um die Methode die PHP Referenz zu benutzen. Eine PHP Referenz schaft eigentlich mehr einen zweiten Namen eines Objektes denn eine wirkliche Referenz:
class ListItem {
var $next;
var $data;
function ListItem($_data = NULL) {
$this->next=NULL;
$this->data=$_data;
}
}
class Liste {
var $head=NULL;
function Liste() {}
function addItem($_item) {
$item = new ListItem($_item);
$tmp=&$this->head;
while($tmp) {
$tmp=&$tmp->next;
}
$tmp=$item;
}
function getListe() {
$tmp=&$this->head;
while($tmp) {
echo $tmp->data;
$tmp=&$tmp->next;
}
}
}
Falls man die Methodik durchschaut hat, sind weitere Feature wie eine Referenz auf das Listenende recht einfach zu handhaben.
2 Kommentare:
kannst du dein komplettes Skript bzw. Klasse anhängen? wär echt nett ,thx
Guter Ansatz! Jedoch kann man in dieser Liste überhaupt nicht umhernavigieren, einfach zum nächsten, ... Was vieleicht noch gut währe wenn du eine Variable Pointer einbauen würdest, welche immer auf das aktuelle Element zeigt. so kann man einfach Funktionen wie moveToNext() realisieren. gruss
Kommentar veröffentlichen