ALG 5

ALG 5



5.1 Listy jednokierunkowe 95

w tej książce dla uproszczenia operuje się głównie wartościami typu int, co nie umniejsza bynajmniej ogólności wywodu. Ewentualne przeróbki tak uproszczonych algorytmów należąjuż raczej do „kosmetyki” niż do zmian o charakterze zasadniczym.

Idea jest zatem następująca: jeżeli lista jest pusta, to struktura informacyjna zawiera dwa wskaźniki NULL. Na rysunkach znajdujących się w tej książce, wartość NULL będzie od czasu do czasu zaznaczana jako OOOOh adres pamięci równy zero. Warto jednak pamiętać, że w ogólnym przypadku NULL nie jest bynajmniej równa zeru - jest to pewien adres, na który na pewno żadna zmienna nie wskazuje (taka jest ogólna idea wskaźnika NULL, niestety wielu programistów o tym nie pamięta). Pierwszy element listy jest złożony z jego własnej wartości (informacji do przechowania) oraz ze wskaźnika na drugi element listy. Drugi zawiera własne pole informacyjne i, oczywiście, wskaźnik na trzeci element listy itd. Miejsce zakończenia listy' zaznaczamy poprzez wartość specjalną NULL. Spójrzmy na rysunek 5-2 przedstawiający listę złożoną z trzech elementów': 2, -I2,1

INFO


Rys. 5 - 2.

Przykład listy jednokierunkowej

Oh

Rysunek 5-3 jest dokładnym odbiciem swojego poprzednika — z tą ty lko różnicą, że w miejsce strzałek symbolizujących „wskazywanie” są użyte konkretne wartości liczbowe adresów komórek pamięci. Heksadecymalna liczba umieszczona nad rekordem jest adresem w pamięci komputera, pod którym zostało mu przydzielone miejsce przez standardową procedurę new1.

Wróćmy jeszcze do analizy rekordów składających się na listę. Pole głowa struktury informacyjnej wskazuje na komórkę zawierającą 2 pierwszy element listy), czyli - wyrażając się czytelniej - zawiera adres, pod którym w pamięci komputera jest zapamiętany rekord.

1

Ze względów' historycznych w'arto może przypomnieć, że w klasycznym języku C trzeba było w celu przydzielania pamięci używać funkcji bibliotecznych calloc i malloc. W C++ instrukcja new robi dokładnie to samo, lecz o wiele czytelniej, i stanowi już element języka.


Wyszukiwarka

Podobne podstrony:
ALG5 5.1 Listy jednokierunkowe 105 Na rysunku 5-7 możemy przykładowo prześledzić jak powinna być wy
ALG5 5.1. Listy jednokierunkowe 115 I res->gIowa=przed; res->oqon=pos; return (ras) ; } 1 •
ALG9 5,1. Listy jednokierunkowe 109 Poruszony powyżej problem był na tyle charakterystyczny dla wie
basque Wynik 19 z 31 w tej książce dla zapytania guardia civil ETA - < Poprzednia Następna >
bat 2 Wynik 13 z 30 w tej książce dla zapytania Herri Batasuna ETA - < Poprzednia Następna > -
bat 4 Wynik 13 z 30 w tej książce dla zapytania Herri Batasuna ETA - < Poprzednia Następna > -
bat 9 WYŚWIETL E-BO OKA Wynik 25 z 30 w tej książce dla zapytania Herri Batasuna ETA - < Poprzedn
pytanie co dla mnie - czytelnika - jest w tej książce najważniejsze? Jakie pojawiające się w niej sy
bat 4 Wynik 13 z 30 w tej książce dla zapytania Herri Batasuna ETA - < Poprzednia Następna > -
ALG 7 5.1. Listy jednokierunkowe 97 public: int pusta()    // czy lista jest pusta? {
ALG 9 5.1. Listy jednokierunkowe 99 stawałby się on wówczas automatycznie głową listy i musiałby zos
ALG1 5.1 Listy jednokierunkowe 101 5.1 Listy jednokierunkowe 101 ELEMENT Aprzed=NULL,*po=inf.głowa;
ALG3 5.1 Listy jednokierunkowe 103 noprawny obiekt - może aktywować dowolną metodę swojej klasy, cz
ALG7 5.1. Listy jednokierunkowe 107 cout « "L2 = for (i=0; i<n; 12.dorzuc2(tab2[i++])) ; 12
ALG1 5.1. Listy jednokierunkowe 111 i zarobków. (Rozbudowa tych struktur danych nie wniosłaby konce
ALG3 5.1 Listy jednokierunkowe 113 int wzor(int x,int(*fun)(int!) [ return fun(x); ) void main(} i
ALG7 5.1. Listy jednokierunkowe 117 Mając już komplet funkcji pusta, zestaw funkcji decyzyjnych i u
ALG9 5.1. Listy jednokierunkowe 119 wartość zwracaną przez funkcję: w normalnej sytuacji winien to

więcej podobnych podstron