5.2. Tablicowa implementacja lisi 125
5-11, gdzie można zobaczyć przykładową implementację listy służącej do przechowywania znaków, zawierającej w danym momencie pięć liter układających się w słowo „KOTEK”.
Rys. 5 - //.
Metoda.. tablic równoległych " (I).
int następny: |
3 |
5 |
4 |
2 |
1 |
-1 |
? |
7 | |
cliar infó: |
H_ |
O |
K |
T |
K |
7 |
0 |
rekord bazowy Przykładowa tablica rekordów z danymi
Pierwszy element tablicy (tzn. ten z pozycji 0) pełni rolę wskaźnika początku listy. Jest to zatem zmienna typu głowa. Jeśli oznaczymy tablicę jako /, to t [Oj. następny zawiera indeks pierwszego rzeczywistego elementu listy. W naszym przykładzie jest to 3. zatem w t(3J.iifo znajduje sic pierwszy element listy -jest nim znak ‘K\ Aby dowiedzieć się następnie, co następuje po ‘K’, musimy odczytać t[3],następny. Jest to 2 i tam też jest umieszczona kolejna litera słowa „KOTEK” - etc. Koniec listy jest zaznaczany umownie poprzez wartość -/ w polu następny.
Rozwiązanie to można uznać za eleganckie i elastyczne. Dopisanie funkcji, które obsługują taką strukturę danych, nic jest trudne. Występuje tu pełna analogia pomiędzy już wcześniej przedstawionymi funkcjami (patrz Listy jednokierunkowe), dlatego też zadanie ewentualnego opracowania ich pozostawiam Czytelnikowi.
Należy przy okazji zwrócić uwagę na jedną niedogodność: mamy tu do czynienia z bardzo ścisłym połączeniem samej „gołej” informacji / komórkami, które symulują wskaźniki. O ile w przypadku list był to zabieg niezbędny, to przy wykorzystaniu tablic możemy bez wahania oddzielić te dwie rzeczy. Inaczej rzecz formułując, dobrze by było dysponować osobną tablicą na dane i osobną na wskaźniki. Dlaczego jednak nic pójść dalej i nie używać kilku tablic na wskaźniki?! Zbliżylibyśmy się wówczas do wersji zaprezentowanej na rysunku 5-8, otrzymując jednak o wiele prostsze w realizacji zadanie.
Na rysunku 5-12 jest przedstawiona ntini-baza danych zgrupowana w wyodrębnionej tablicy danych.