ALG2

ALG2



102___Rozdział 5. Struktury danych

I

ELEMENT *q=inf.głowa; if (pusta())

cout << "(lista pusta)";

else

while (q != NULL)

{

cout << q->waitosc « "    ";

q=q->nastepny;

I

cout << "\n";

)

Do usuwania ostatniego elementu listy zatrudniliśmy przedefiniowany operator dekrementacji.

Funkcja, która się za nim „ukrywa”, jest relatywnie prosta: jeśli na liście jest tylko jeden element, to modyfikacji ulegnie zarówno pole głowa jak i pole ogon struktury informacyjnej. Oba te pola, po uprzednim usunięciu jedynego elementu listy, zostaną zainicjowane wartością NULL,

Nieco trudniejszy jest przypadek, gdy lista zawiera więcej niż jeden element. Należy wówczas odszukać przedostatni jej element, aby móc odpowiednio zmodyfikować wskaźnik ogon struktury informacyjnej. Znajomość przedostatniego elementu listy umożliwi nam łatwe usunięcie ostatniego elementu listy. Poniżej jest zamieszczony pełny tekst funkcji wykonującej to zadanie.

LISTA4 LISTA::operator --()

( II parametrem domyślnym jest sam obiekt if(ml.glowa==inf.ogon)    II jeden element

{    // (lub lista pusta)

delete inf.głowa; inf.glowa=inf.ogon=NULL;

lelsa

(

ELEMENT *temp=inf.głowa;

while ((temp->nastepny) !- inf.ogon)

// szukamy przedostatniego elementu listy...

temp=temp->nastepny; inf.ogon=tenp;

delete temp->nastepny; // ... i usuwamy go temp->nastepny=NULL;

)

return (*this); II zwracamy zmodyfikowany obiekt )

Obiekt jest zwracany poprzez swój adres, czyli może posłużyć jako argument dowolnej dozwolonej na nim operacji. Przykładowo możemy utworzyć wyrażenie (12—)—.wypisz(,)■ Mimo groźnego wyglądu działanie tej instrukcji jest trywialne: pierwsza „dekrcmcntacja” zwraca prawdziwy, fizycznie istniejący obiekt, który jest poddawany od razu drugiej dekrementacji. Rezultat tej ostatniej - jako peł-


Wyszukiwarka

Podobne podstrony:
ALG2 162 Rozdział 5. Struktury danych c) pewien element listy, który odpowiada kryteriom poszukiwań
ALG2 112 Rozdział 5. Struktury danych 112 Rozdział 5. Struktury danych //rekord informacyjny listy
ALG2 122 Rozdział 5. Struktury danych Czerniak zarabia 3000zl Wynik usunięcia rekordu pracownika za
ALG2 142 Rozdział 5. Struktury danych a ż do momentu znalezienia właściwego dlań miejsca. Popatrzmy
ALG6 116 Rozdział 5. Struktury danych Iisla2.li int alfabetycznie(ELEMENT *q],ELEMENT *q2) { II czy
ALG8 118 Rozdział 5. Struktury danych if(pŁzed==NULL) // wstawiamy na początek listy ( inf_ptr[nr].
ALG0 120 Rozdział 5. Struktury danych i if (pos!=q) rsturn(O);    II element nie
Alg0 120 Rozdział 5. Struktury danych i if (pos!=q) rsturn(O);    II element nie
ALG4 124 Rozdział 5. Struktury danych Co jednak z dołączaniem elementów do listy? Poniżej są omówio
ALG8 148 Rozdział 5. Struktury danych 148 Rozdział 5. Struktury danych „ nadchodzące" elementy
ALG 4 94 Rozdział 5. Struktury danych5.1. Listy jednokierunkowe Lista jednokierunkowa jest oszczędną
ALG 6 96 Rozdział 5. Struktury danych Rys. 5 - 3. FCOOh FCI4h FFEEh Przykład listy jedno-kierunk
ALG 8 98 Rozdział 5. Struktury danych W następnych paragrafach zostaną przedstawione wszystkie metod
ALG4 104 Rozdział 5, Struktury danych dla danego obiektu wykonanie na sobie operacji „dekrementacji
ALG8 108__Rozdział 5. Struktury danych5.1.3.Listy jednokierunkowe - teoria i rzeczywistość Oprócz p
ALG0 110 Rozdział 5. Struktury danych Rysunek 5-9 zawiera już kilka nowości w porównaniu z tym, co
ALG4 114 Rozdział 5. Struktury danych stan—ZAKOŃCZ; else { przcd=po; po=po->nastepny; I Różnica
ALG6 126 Rozdział 5. Struktury danych Rys. 5 - 12. Metoda„ tablic równoległych " (2) DANE L2
ALG0 130 Rozdział 5. Struktury danych Symboliczny stos znajdujący się pod każdą z sześciu grup inst

więcej podobnych podstron