Podstawy Programowania - semestr dmgi
30 rcpcał
31 ifp^rocfnil then
32 bcgin
33 |r\ncxt:-nowy;
34 nowy\prev:-p;
35 exit;
36 end,
37 p:-pA.nexl;
38 until p" .d;ina >a;
39 nowy\prcv:-p\prev;
40 nowyA.ncxt:-p;
41 pA.prcvA.ncxt:-nowy;
42 pA.prcv.--nowy;
43 end;
44
45 procedurę create(var f: wskaźnik; aiintcger);
46 var
47 nowywskaznik;
48 begin
49 if P-nil then
50 bcgin
51 ncwfnowy);
52 nowy A. da na :~a;
53 nowyA.ncxt:-nil;
54 nowyA.prcv.—nil;
55 f:-nowy,
56 end
57 ebe
58 insert node(f,a);
59 end;
60
61 procedurę show both(f:wskaźnik);
62 var
63 p:wskaznik;
64 begin
65 while fo nil do
66 bcgin
67 pr-f.
68 writc(P'.dana:3);
69 f:-T.ncxt;
70 end;
71 wTiteln;
72 while ponil do
73 bcgin
74 wrilc(pA.dana:3);
3. Po w ykonaniu wiersza 40
4. Po w ykonaniu wiersza 41
5. Po w ykonaniu wiersza 42
Po zakończeniu pełli jrepeat” zmienna wskaźnikowa „p” wskazuje element listy, przed którym i w leży umieścić nowy element. W wierszach 39 i 40 przypisujemy odpowiednio polu ,.prev" i polu „ncxt” nowego elementu adres elementu poprzedzającego element wskazywany przez „p” i adres elementu wskazywanego przez ,p". W wierszu 41 zapamiętujemy w polu „ncxt" elementu poprzedzającego element wskazywany przez „p” adres nowego elementu. W wierszu 42. w polu „prev" elementu wskazywanego przez „p" również umieszczamy adres nowego elementu. Po tych operacjach otrzymujemy konfigurację przedstaw ioną na dole ilustracji
Procedura ..dcletc nodc" realizuje operację usuwania elementu z listy. Pisząc tego rodzaju procedurę należy uwzględnić trzy przypadki. W pierwszym elementem usuwanym będzie element znajdujący się na początku listy. Usunięcie go jest dokonywane w wierszach 96 -104. W wierszu 98 zapamiętujemy w zmiennej ..tmp” adres elementu, który jest jego następnikiem, po czym w wierszu 99 zwal nu my pamięć przeznaczoną na pierwszy element. Pierwszym elementem listy zostaje element, którego adres pamiętamy w zmiennej „tmp”. Przepisujemy więc jego adres do zmiennej „p”. ustawiamy wartość jego pola «prev” na „NIL” i modyfikujemy wskaźnik na pierwszy element listy (J”), lak. aby wskazywał na niego-'. Po wykonaniu tych czynności możemy zakończyć działanie procedury. Obsługa drugiego przypadku jest pow iązana z obsługą trzeciego. W wierszach 105 - 108 przeszukujemy itcracyjnic listę szukając elementu, który przechowywałby zadaną wartość — ten element będziemy chcieli usunąć. Może się okazać, że takiego elementu nic będzie na liście.
2 Adres pierwszego elementu listy zawiera parametr „f procedury, natomiast zmienna lokalna _p“ jest tylko zmienną pomocniczą.
2