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!
Cześć. Dziś luźny artykuł, bo dziś pobawimy się jedną z pierwszy wersji Pythona. Skompilujemy go i zobaczymy co tam w… Read More
Nowy rok czas zacząć! Więc lećmy z podsumowaniem. Nowy artykuł Nie uwierzycie, ale pojawił się na blogu nowy artykuł! Piszę… Read More
Cześć! W Pythonie 3.13 dodano JITa! JIT, czyli just-in-time compiler to optymalizacja na która Python naprawdę długo czekał. Na nasze… Read More
Cześć! Zapraszam na podsumowanie roku 2024. Książki W sumie rok 2024 był pod względem ilości książek nieco podobny do roku… Read More
Podtrzymując tradycję, prawie regularnych podsumowań, zapraszam na wpis! Nie mogło obyć się bez Karkonoszy We wrześniu odwiedziłem z kolegą Karkonosze,… Read More
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
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.