ALG9

ALG9



5.1. Listy jednokierunkowe 119

wartość zwracaną przez funkcję: w normalnej sytuacji winien to być różny od NULL, adres fizycznego rekordu przeznaczonego do usunięcia.

ELEMENT* LISTA::usuń wsk{

LPTR_INFO * inf,

ELEMENT *q,

int(*decyzja)(ELEMENT *ql,

ELEMENT *q2)

)

(

if {inf->ęlowa==NULL)

// lista pusta, czyli nie ma co usuwać! return NULL;

else //szukamy elementu do usunięcia

{

LP7R *przed,*pns;

LPTR_INFO wgdzie^cdszukaj_wsk(inf,q,decyzja)/

przed=gazie->glowa;

po3-gdzie >cgon;

if(pos==NULL)

return NULL; // element nie odnaleziony if(pos==inf->glowa) // usuwamy z początku listy inf->glowa-pos->nastepny;

else

if(pos->nastepny==NULL)//usuwamy z końca listy (

inf->ogon=przed; pr zed->r.as tepny "NULL;

felse // usuwamy gozieś "ze środka" przcd->nastepny=pos->nastepny;

ELEMENT *ret=pos->adres; delata pos; return ret;

)

}

Funkcja usuń dam jest zbudowana wg podobnego schematu co funkcja usun wsk. Ponieważ przyjmowane jest założenie, że element, który chcemy usunąć, istnieje, programista musi zapewnić dokładną kontrolę poprawności wykonywanych operacji. Tak się dzieje w naszym przypadku - ewentualna nieprawidłowość zostanie wykryta już podczas próby usunięcia wskaźnika i wówczas usunięcie rekordu po prostu nie nastąpi.

int LISTA::usun_dane(ELEMENT *q)

(

// zależenie: q istnieje!

ELEMENT *przed,*pos; przed=NULL; pos=info dane.glcwa;

while( (pos!—q] & &(pes!=NULL))//3 zukany elementu "przed"

<

przed-pos; pos=pos->nastepny;


Wyszukiwarka

Podobne podstrony:
ALG 9 5.1. Listy jednokierunkowe 99 stawałby się on wówczas automatycznie głową listy i musiałby zos
ALG9 5,1. Listy jednokierunkowe 109 Poruszony powyżej problem był na tyle charakterystyczny dla wie
ALG7 5.1. Listy jednokierunkowe 117 Mając już komplet funkcji pusta, zestaw funkcji decyzyjnych i u
ALG 5 5.1 Listy jednokierunkowe 95 w tej książce dla uproszczenia operuje się głównie wartościami ty
ALG 7 5.1. Listy jednokierunkowe 97 public: int pusta()    // czy lista jest pusta? {
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
ALG5 5.1 Listy jednokierunkowe 105 Na rysunku 5-7 możemy przykładowo prześledzić jak powinna być wy
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
ALG5 5.1. Listy jednokierunkowe 115 I res->gIowa=przed; res->oqon=pos; return (ras) ; } 1 •
ALG1 5.1 Listy jednokierunkowe 121 } cout << "

Poznaj C++ w$ godziny0091 76 Godzina 5 Definicja funkcji musi być zgodna, co do wartości zwracanej,
SDC11597 Zwracanie wartości przez funkcje ■Wszystkie funkcje, z wyjątkiem zadeklarowanych jako void,

więcej podobnych podstron