5032124670

5032124670



27


1.3. TYPY DANYCH, STRUKTURY DANYCH I ADT

pola rekordu) są natomiast dostępne w sposób bezpośredni, czyli szybciej niż w pliku. Plik odróżnia jednak od tablicy istotna zaleta — jego wielkość (liczba zawartych w nim elementów) może zmieniać się w czasie i jest potencjalnie nieograniczona.

Wskaźniki i kursory

Oprócz mechanizmów agregujących istniejąjeszcze inne sposoby ustanawiania relacji między komórkami — służą do tego wskaźniki i kursory. Wskaźnik jest komórką, której zawartość jednoznacznie identyfikuje inną komórkę. Fakt, że komórka A jest wskaźnikiem komórki B, zaznaczamy na schemacie struktury danych rysując strzałkę od A do B.

W języku Pascal to, że zmienna ptr może wskazywać komórkę o typie cel ltype, zaznaczamy w następujący sposób:

var

ptr: Tcelltype;

Strzałka poprzedzająca nazwę typu bazowego oznacza typ wskaźnikowy (czyli zbiór wartości stanowiących wskazania na komórkę o typie cel ltype). Odwołanie do komórki wskazywanej przez zmienną ptr (zwane także dereferencją wskaźnika) ma postać ptrf — strzałka występuje za nazwą zmiennej.

Kursor tym różni się od wskaźnika, że identyfikuje komórkę w ramach konkretnej tablicy — wartością kursora jest indeks odnośnego elementu. W samym zamyśle nie różni się on od wskaźnika —jego zadaniem jest także identyfikowanie komórki —jednak, w przeciwieństwie do niego, nie można za pomocą kursora identyfikować komórek „samodzielnych”, które nie wchodzą w skład tablicy. W niektórych językach, jak np. Fortran i Algol, wskaźniki po prostu nie istnieją i jedyną metodą identyfikowania komórek są właśnie kursory. Należy także zauważyć, że w Pascalu nie jest możliwe utworzenie wskaźnika do konkretnej komórki tablicy, więc jedynie kursory umożliwiają identyfikowanie poszczególnych komórek. Niektóre języki, jak PL/1 i C, są pod tym względem bardziej elastyczne i dopuszczają wskazywanie elementów tablic przez „prawdziwe” wskaźniki.

Na schemacie struktury danych kursory zaznaczane są podobnie jak wskaźniki, czyli za pomocą strzałek, a dodatkowo w komórkę będącą kursorem może być wpisana jej zawartość1 dla zaznaczenia, iż nie mamy do czynienia z „typowym” wskaźnikiem.

Przykład 1.3. Na rysunku 1.5 pokazano strukturę danych składającą się z dwóch części: tablicy reclist (zdefiniowanej wcześniej w tym rozdziale) i kursorów do elementów tej tablicy; kursory te połączone są w listę łańcuchową. Elementy tablicy reclist są rekordami. Pole next każdego z tych rekordów jest kursorem do „następnego” rekordu i zgodnie z tą konwencją, na rysunku 1.5 rekordy tablicy uporządkowane są w kolejności 4, 1,3, 2. Zwróć uwagę, że pole next rekordu 2 zawiera wartość 0, oznaczającą kursor pusty, czyli nie identyfikujący żadnej komórki, konwencja taka ma sens jedynie wtedy, gdy komórki tablicy indeksowane są począwszy od 1, nie od zera.

1

Wynika to z jeszcze jednej, fundamentalnej różnicy między wskaźnikiem a kursorem. Otóż implementacja wskaźników w Pascalu (i wszystkich niemal językach, w których wskaźniki są obecne) bazuje na adresie komórki w przestrzeni adresowej procesu. Adres ten (a więc i konkretna wartość wskaźnika) ma sens jedynie w czasie wykonywania programu — nie istnieje więc jakakolwiek wartość wskaźnika, którą można by umieścić na schemacie. Kursor natomiast jest wielkością absolutną, pozostającą bez związku z konkretnymi adresami komórek—przyp. tłum.



Wyszukiwarka

Podobne podstrony:
Obiektowo-relacyjny model danych ® Abstrakcyjne typy danych (ADT) definiowane przez użytkownika • Na
Struktury danych. Proste typy danych: standardowe, okrojone, tablice, rekordy, rekordy z wariantami,
Strukturalne typy danych: tablica, rekord, plik tekstowy i elementowy. Operacje na strukturach. Dyna
WYKŁAD4 i5 TYPY STRUKTURALNE Poznane dotąd typy danych : Integer, Real, Clar, Boolean, wyfcczeniowy
25 1.3. TYPY DANYCH, STRUKTURY DANYCH 1ADT Drugim abstrakcyjnym typem danych, używanym przez procedu
Wykład IITyp danych, proste typy danych Algorytmy i struktury danych Wyższa Szkoła Biznesu Seme
Dell Laser MFP00n 081209201503 3 (strukturalny język zapytań)tYPY DANYCH ccł. Typy znakowe char rep
37990 skanuj0016 (303) Rozdział 2. * Znaczniki, zmienne i typy danych    27 JOis
Złożone typy danych Na podstawie http://pl.wikibooks.org/wiki/C/Typy_złożoneStruktury Struktury to
skanuj0018 (274) fezdział 2. ♦ Znaczniki, zmienne i typy danych 29 być dla nas przydatne podczas jeg

więcej podobnych podstron