ALG 7

ALG 7



5.1. Listy jednokierunkowe 97

public:

int pusta()    // czy lista jest pusta?

{

return (inf.glowa==NULL);

}

II sumuje dwie listy:

LISTA friends operator i(LISTAa,1ISTAS);

void wypisz O;    // wypisuje elementy listy

int szukaj(int x); II szuka elementu x

void dorzuci(int x); II dorzuca x bez sortowania void dorzuc2(int x); II dorzuca x z sortowaniem

void zeruj()    // zerowanie listy

{ inf,giowa=in£.ogcn=NOLI; )

LISTAS operator —();    // usuwa ostatni element listy

LISTAO    //    konstruktor

(inf.glowa=inf.ogon=NULL;}

~LISTA()    //    destruktor

(while (!pu3ta(j) (*this)--;) private:

typedef struct    II    struktura informacyjna

(

ELEMENT *glowa;

ELEMENT *ogon;

1INFO;

INFO inf;    II rekord informacyjny

);    //    koniec deklaracji    klasy LISTA

Pole wartość w naszym przykładzie jest typu int, ale w praktyce może to być bardzo złożony rekord informacyjny (np. zawierający imię, nazwisko, wiek...).

Klasa LISTA nie jest zbyt rozbudowana, jednak zawiera kilka rozwiązań, które wymagają dość szczegółowego komentarza. Kwestią otwartą pozostaje wybór ewentualnego utajnienia typów danych; programista musi sam podjąć odpowiednie decyzję mając na uwadze takie aspekty, jak: sens ujawnia-nia/ukrywania atrybutów, parametry „sprawnościowe” metod etc. Propozycje przedstawione w tym rozdziale w żadnym razie nie pretendują do miana rozwiązań wzorcowych - takie bowiem nie istnieją wobec nieskończonej w zasadzie ilości nowych sytuacji i problemów, z którymi może się w praktyce spotkać programista. Staraniem autora było raczej pokazanie istniejącej różnorodności, a nie przekonywanie do jednych rozw iązań przy jednoczesnym pomi janiu innych.


Wyszukiwarka

Podobne podstrony:
ALG7 5.1. Listy jednokierunkowe 117 Mając już komplet funkcji pusta, zestaw funkcji decyzyjnych i u
ALG7 5.1. Listy jednokierunkowe 107 cout « "L2 = for (i=0; i<n; 12.dorzuc2(tab2[i++])) ; 12
ALG 5 5.1 Listy jednokierunkowe 95 w tej książce dla uproszczenia operuje się głównie wartościami ty
ALG3 5.1 Listy jednokierunkowe 113 int wzor(int x,int(*fun)(int!) [ return fun(x); ) void main(} i
ALG 9 5.1. Listy jednokierunkowe 99 stawałby się on wówczas automatycznie głową listy i musiałby zos
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
ALG9 5,1. Listy jednokierunkowe 109 Poruszony powyżej problem był na tyle charakterystyczny dla wie
ALG1 5.1. Listy jednokierunkowe 111 i zarobków. (Rozbudowa tych struktur danych nie wniosłaby konce
ALG5 5.1. Listy jednokierunkowe 115 I res->gIowa=przed; res->oqon=pos; return (ras) ; } 1 •
ALG9 5.1. Listy jednokierunkowe 119 wartość zwracaną przez funkcję: w normalnej sytuacji winien to
ALG1 5.1 Listy jednokierunkowe 121 } cout << "

140 TIF char *m_pch; public: int operator==(const Napis& napis) const{ return(strcmp(m_pch, napi
ALG7 5.2. Tablicowa implementacja list 1275.2.3.Listy innych typów Listy jednokierunkowe są bardzo
ALG 4 94 Rozdział 5. Struktury danych5.1. Listy jednokierunkowe Lista jednokierunkowa jest oszczędną

więcej podobnych podstron