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!
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
Cześć, ostatnio w Internecie pojawiło się dużo artykułów, które nie były przychylne pracy zdalnej. Z drugiej strony większość komentarzy pod… Read More
Zapraszam na krótkie podsumowanie miesiąca. Książki W listopadzie dokończyłem cykl "Z mgły zrodzony" Sandersona. Tylko "Stop prawa" mi nie do… 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.