Lista w C++
|
Implementacja wlasnej listy w C++ |
||||||
Jak juz wspominalem, samemu zaimplementowac liste nie jest trudno, a poza tym to swietne cwiczenie programistyczne. Zalózmy, ze chodzi nam o taka wlasnie strukture jak na rysunku.
W tej implementacji kazdy obiekt na liscie jest rekurencyjna struktura i musi zawierac dodatkowy element: wskaznik do innego obiektu tego typu. Wynika to z faktu, ze to wskazniki sa podstawa nawigacji w tym typie danych, a dostep do poszczególnych elementów jest mozliwy wylacznie przez wskaznik. Charakterystyczna cecha takich struktur rekurencyjnych jest mozliwosc zmieniania ich rozmiarów. U nas lista bedzie taka wlasnie dynamiczna struktura, zas poczatek, jak mówi nazwa, jest wskaznikiem na poczatkowy adres tej struktury - umozliwi to pózniejsze operacje, takie jak np dostep do poszczególnych elementów czy zwalnianie pamieci. W zaleznosci od potrzeb nasza liste bedziemy mogli rozszerzac "do tylu" lub "do przodu". Oto dwie procedury na takie okolicznosci i do "kompletu" procedura tworzaca liste (stos).I na koniec wypisanie i zwolnienie pamieci po liscie (potraktowanej jako stos)
void done() { struct ciag *pom; lista=poczatek; while(lista) { pom=lista; lista=lista->nast; free(pom); } } |