PHP pod względem rozwiązania braku wskaźników jest podobny do Javy ;) Czyli zmienne są referencją. Prosta implementacaj listy w PHP:
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 | class Node { public $next; public $value; } class Lista { private $root; public function __construct($a){ $this->root=new Node(); $this->root->value=$a; $this->root->next=NULL; } public function add($a){ $r=$this->root; while($r->next!=NULL) { $r=$r->next; } $temp = new Node(); $temp->next=NULL; $temp->value=$a; $r->next=$temp; } public function show(){ $r=$this->root; while($r!=NULL){ echo $r->value.' '; $r=$r->next; } } } |
Oczywiście użycie to
1 2 3 4 5 | $t = new Lista(4); $t->add(6); $t->add("jj"); $t->add(19); $t->show(); |
Bardzo dużo rzeczy w PHP przechowywane jest w tablicach. Napiszmy jeszcze metodę która zwróci listę w postaci tablicy:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public function as_array(){ $r=$this->root; $return = array(); $i=0; while($r!=NULL){ $return[$i]=$r->value; $r=$r->next; $i++; } return $return; } |
No i pobranie tablicy stworzonej z listy:
1 | $tablica = $t->s_array(); |
:)
Pozdrawiam!
Oj daaawnoo mnie tu nie było. Ale wakacje to był czas dużej liczby intensywnych wyjazdów i tak naprawdę, dopiero jakoś… Read More
Cześć! Zapraszam na krótkie podsumowanie kwietnia. Wyjazd do Niemiec A dokładniej pod granicę z Francją. Chrześnica miała pierwszą komunię. Po… Read More
Ostatnio tygodnie były tak bardzo wypełnione, że nie udało mi się napisać nawet krótkiego podsumowanie. Więc dziś zbiorczo podsumuję luty… Read More
Zapraszam na krótkie podsumowanie miesiąca. Książki W styczniu przeczytałem "Homo Deus: Historia jutra". Książka łudząco podoba do wcześniejszej książki tego… Read More
Cześć! Zapraszam na podsumowanie roku 2023. Książki Zacznijmy od książek. W tym roku cel 35 książek nie został osiągnięty. Niemniej… Read More
Zapraszam na krótkie podsumowanie miesiąca. Książki W grudniu skończyłem czytać Mein Kampf. Nudna książka. Ciekawsze fragmenty można by było streścić… Read More
Pokaż komentarze
Wbudowane w PHP rozszerzenie SPL także pozwala na budowę takich rozwiązań. W Twoim kodzie podczas dodawania kolejnej pozycji na liście musisz przejść przez wszystkie pozostałe. Może to powodować spadek wydajności przy dużej ilości danych - może warto zrobić cache ostatniej wartości? . Próbowałeś to porównać pod kątem wydajności z najprostszymi implementacjami listy dostępnymi w SPL? Niepotrzebnie także jest przypisywane null do next w temp.