112 Rozdział 5. Struktury danych
112 Rozdział 5. Struktury danych
//rekord informacyjny listy danych // struktura informacyjna
INFO info_dane; typedef struct rcb_ptr_inf // listy wskaźników l
LPTR 'głowa;
LPTR 'ogon;
// tablica kryteriów (na // rysunku jest to TAB_?TR) (omówione w tekście):
)LPTR_INFO;
LPTR_INF0 inf_ptr[n2];
II kilka prywatnych funkcji
LPTR_INFO 'odszukaj_wok(LPTR_INFC*,ELEMENT*,
int(*)(ELEMENT*,ELEMENT*));
ELEMENT *usun_wsk(LPTRJINFO*,ELEMENT*,
int;*)(ELEMENT*,ELEMENT*)); int usun__dane (ELEMENT*) ; void dcrzuc2( int,ELEMENT*,
int(‘decyzja)(ELEMENT*,ELEMENT*)); void wypiszl(LPTR_INFO‘);
);
Tajemnicze metody prywatne, podane wyżej bez żadnego opisu, zostaną szcze- I gółowo omówione w następnych paragrafach...
Analizując procedury i funkcje do obsługi list można zauważyć, że operacje odszu- I kiwania pewnego elementu wg podanego wzorca (np. „odszukaj pracownika, który i zarabia I200zl”) i wyszukiwania miejsca na wstawienie nowego elementu różniły się nieznacznie. Od tego spostrzeżenia do gotowej realizacji programowej jest już tylko jeden krok. Aby go pokonać, musimy dobrze zrozumieć zasady operowania I wskaźnikami do funkcji1 w C++, bowiem ich użycie pozwoli na eleganckie rozwiązanie kilku problemów. Zdając sobie sprawę, że wskaźniki do funkcji są relatywnie rzadko stosowane, niezbędne wydało mi się przypomnienie sposobu ich stosowania w C++. Jest to ukłon głównie w stronę programistów pascalowych, bowiem w ich ulubionym języku ten mechanizm w ogóle nie istnieje.
Przedstawiony poniżej przykład ilustruje sposób użycia wskaźników do funkcji I w C++.
wskJun.cpp I
int do_2(int a)
(
return a*a;
I
int do_4(int a)
i
return a*a*a*a;
Miłośnicy i znawcy języka LISP mogą opuścić ten paragraf...