Listy są najczęściej używanymi strukturami danych (obok tablic). Pozwalają rozwiązać różne problemy programistyczne. Znajdują zastosowanie w implementacji innych struktur danych takich jak: stosy, kolejki, grafy. W odróżnieniu od tablic charakteryzują się większą wydajnością oraz mogą dynamicznie zmieniać swój rozmiar.
W każdym elemencie listy dwukierunkowej (węźle) jest przechowywane odniesienie zarówno do „następnika”, jak i „poprzednika” elementu w liście. Taka reprezentacja umożliwia swobodne przemieszczanie się po liście w obie strony.
Przykład:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $languages = new SplDoublyLinkedList(); $languages->push("C++"); $languages->push("JAVA"); $languages->push("PHP"); $languages->push("PYTHON"); for ($languages->rewind(); $languages->valid(); $languages->next()) { echo $languages->key().'. '.$languages->current().'<br />'; } ?> |
Wyświetli:
1 2 3 4 |
0. C++ 1. JAVA 2. PHP 3. PYTHON |
Metody klasy SplDoublyLinkedList:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
add(mixed $index, mixed $newval): void // dodaje nowy węzeł w miejscu wskazanym za pomocą indeksu bottom(): mixed // pobiera węzeł z początku listy count(): int // zwraca rozmiar listy current(): mixed // zwraca bieżący węzeł getIteratorMode(): int // zwraca tryb iteracji isEmpty(): bool // sprawdza czy lista jest pusta key(): mixed // zwraca indeks bieżącego węzła next(): void // przechodzi do następnego węzła offsetExists(mixed $index): bool // sprawdza, czy żądany indeks istnieje offsetGet(mixed $index): mixed // zwraca wartość o określonym indeksie offsetSet(mixed $index, mixed $newval): void // ustawia wartość o określonym indeksie offsetUnset(mixed $index): void // anuluje wartość dla określonego indeksu pop(): mixed // wyciąga węzeł z końca listy prev(): void // przechodzi do poprzedniego węzła push(mixed $value): void // dodaje nowy węzeł na końcu listy rewind(): void // przewija iterator z powrotem do początku listy serialize(): string // serializuje pamięć setIteratorMode(int $mode): void // ustawia tryb iteracji (LIFO, FIFO itd.) shift(): mixed // usuwa węzeł z początku listy top(): mixed // pobiera węzeł z końca listy unserialize(string $serialized): void // deserializuje pamięć unshift(mixed $value): void // dodaje węzeł na początku listy valid(): bool // sprawdza czy na liście są węzły |
Więcej na stronie: php.net/manual/en/class.spldoublylinkedlist.php
Obrazek wyróżniający do posta: Gerd Altmann