5.1 Listy jednokierunkowe 101

5.1 Listy jednokierunkowe 101


ELEMENT Aprzed=NULL,*po=inf.głowa; enum I SZUKAJ, ZAKOŃCZ} stan=SZUKAJ;

//zmienna wyliczeniowa while f(stan==SZUKAJ) && (po! =NTJT.r.) ) if <po->wartosc>=x)

stan=ZAKONCZ; //znaleźliśmy właściwe miejsce! else // przemieszczamy sie w poszukiwaniach { fi właściwego miejsca przcd-po;    // wskaźniki "przed" i "po"

po=po->nastepny;// zapamiętają "miejsce"

// wstawiania

}    fi analiza rezultatu poszukiwali:

if(przed==NULL) //wstawiamy na początek listy

{

inf.gicwa=q; q->nastepny=po;

)

gIsg

if(po==NULL) // wstawiamy na koniec listy i

inf.ogon->nastepny=q; q->nastepny=NULL; inf.ogon=q;

}

else // wstawiamy gdzieś "w środku"

{

przed->nascepny=q; q->nastepny=po;

}

ł

}

Kolejne ważne, choć skrajnie nieskomplikowane metody są niemalże identyczne koncepcyjnie. W celu znalezienia w liście pewnego elementu x należy przejrzeć ją za pomocą zwykłej pętli while:

int LISTA::szukaj(int x)

(

ELEMENT *q=int.głowa; while (q != NULL)

(

if (q->wartosc==x) return (1); q=q->nastepny;

)

return(0) ;

Identyczną strukturę posiada metoda wypisz służąca do wypisywania zawartości listy:

void LISTA::wypisz()