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 listyALG2 122 Rozdział 5. Struktury danych Czerniak zarabia 3000zl Wynik usunięcia rekordu pracownika zaALG2 142 Rozdział 5. Struktury danych a ż do momentu znalezienia właściwego dlań miejsca. PopatrzmyALG6 116 Rozdział 5. Struktury danych Iisla2.li int alfabetycznie(ELEMENT *q],ELEMENT *q2) { II czyALG8 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 nieAlg0 120 Rozdział 5. Struktury danych i if (pos!=q) rsturn(O); II element nieALG4 124 Rozdział 5. Struktury danych Co jednak z dołączaniem elementów do listy? Poniżej są omówioALG8 148 Rozdział 5. Struktury danych 148 Rozdział 5. Struktury danych „ nadchodzące" elementyALG 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-kierunkALG 8 98 Rozdział 5. Struktury danych W następnych paragrafach zostaną przedstawione wszystkie metodALG4 104 Rozdział 5, Struktury danych dla danego obiektu wykonanie na sobie operacji „dekrementacjiALG8 108__Rozdział 5. Struktury danych5.1.3.Listy jednokierunkowe - teoria i rzeczywistość Oprócz pALG0 110 Rozdział 5. Struktury danych Rysunek 5-9 zawiera już kilka nowości w porównaniu z tym, coALG4 114 Rozdział 5. Struktury danych stan—ZAKOŃCZ; else { przcd=po; po=po->nastepny; I RóżnicaALG6 126 Rozdział 5. Struktury danych Rys. 5 - 12. Metoda„ tablic równoległych " (2) DANE L2ALG0 130 Rozdział 5. Struktury danych Symboliczny stos znajdujący się pod każdą z sześciu grup instwięcej podobnych podstron