5.1. Listy jednokierunkowe 115
I
res->gIowa=przed;
res->oqon=pos;
return (ras) ;
}
1
• wskaźnik inf do struktury informacyjnej listy wskaźników; adres początku znajduje się w polu głowa, a adres końca w polu ogon;
• wskaźnik q do pewnego fizycznie istniejącego rekordu danych. Jest to albo nowy rekord, który chcemy dołączyć do listy, albo po prostu pewien szablon poszukiwań;
• wskaźnik decyzja do funkcji porównawczej, która zostanie włożona do instrukcji ;/w pętli while.
Przykładowo, jeśli chcemy odszukać i usunąć pierwszy rekord, który w polu nazwisko zawiera „Kowalski", to należy stworzyć tymczasowy rekord, który będzie miał odpowiednie pole wypełnione tym nazwiskiem (pozostałe nie będą miały wpływu na poszukiwanie):
ELEMENT *f=new ELEMENT; stropy(i-» nazwisko,"Kowalski") ;
Podobna uwaga należy się pozostałym kiyteriom poszukiwań - wg zarobków, imienia, etc. Jeśli poszukiwanie zakończy się sukcesem, to w polu ogon zostanie zwrócony adres fizycznie istniejącego rekordu, który odpowiadał wzorcowi naszych poszukiwań. W przypadku gdyby element taki nie istniał, powinny zostać zwrócone wartości NLLL. Znajomość wskaźników przed i po umożliw i nam zwolnienie komórek pamięci zajmowanych dotychczas przez rekord danych, jak również odpowiednie zmodyfikowanie całej listy, tak aby wszystko było na swoim miejscu.
Innym przykładem zastosow-ań funkcji niech będzie dołączanie nowego elementu do listy. Trzeba wówczas stworzyć nowy rekord, prawidłowo wypełnić jego pola i dołączyć na koniec listy danych. Następnie należy adres tego elementu wstawić do list wskaźników posortowanych wg zarobków, nazwisk, czy też dowolnych innych kryteriów. W każdej z tych list miejsce wstawienia będzie inne, czyli za każdym razem różne mogą być wartości wskaźników przed i po, które zwróci funkcja odszukaj_wsk.
Zastosowanie funkcji odszukaj_wsk jest, jak widać, bardzo wszechstronne. Taka elastyczność możliwa była do osiągnięcia tylko i wyłącznie poprzez użycie wskaźników do funkcji - we właściwym miejscu i o właściwej porze...
Oto „garść” funkcji decyzyjnych, które mogą zostać użyte jako parametr: