ALG4

ALG4



104 Rozdział 5, Struktury danych

dla danego obiektu wykonanie na sobie operacji „dekrementacji”. Obiekt ulegający z pewnych powodów destrukcji (ty powe przypadki zostały wzmiankowane wcześniej) wywoła swój destruktor, któiy zaaplikuje na sobie tyle razy funkcję dekrementacji. aby całkowicie zwolnić pamięć wcześniej przydzielona liście

Kolejna porcja kodu do omówienia dotyczy redefinicji operatora + (plus). Naszym celem jest zbudowanie takiej funkcji, która umożliwi dodawanie list w jak najbardziej dosłownym znaczeniu tego słowa. Chcemy, aby w wyniku następujących instrukcji:

LISTA x,y,z;    II tworzymy 3 puste listy.

x. dorzuc2(3); x.dorzuc2(2); x.dorzuc2(1);

y. dorzuc2(6; y.dorzuc2(S); y.dorzuc2(4); z=x+y;

... lista wynikowa z zawierała wszystkie elementy list x i y, tzn.: /. 2, .1, 4, .5 i 6 (posortowane!). Najprostszą metodą jest przekopiowanie wszystkich elementów z list .v i y do listy z, aktywując na rzecz tej ostatniej metodę dorzuc2. Zapewni to utworzenie listy już posortowanej:

LI3TA& operator + (LISTA Sx, LISTA <ćy)

(

LISTA *temp=new LISTA;

ELEMENT *ql=(x.Inf).głowa; // wskaźniki robocze ELEMENT łq2=(y.inf).głowa;

while (ql !- NULL) // przekopiowanie listy X do temp (

temp->dorzuc2(ql->wartosc); ql=ql->ńastepriy;

I

while (q2 != NULL) // przekopiowanie listy y do temp I

temp->dorzuc2(q2->warto3c); q2=q2->nastepny;

)

roturn (*temp);

I

Czy jest lo najlepsza metoda? Chyba nie, z uwagi chociażby na niepotrzebne dublowanie danych. Ideałem byłoby posiadanie metody, która wykorzystując fakt, iż listy' są już posortowane”, dokona ich zespolenia ze sobą (tzw. fuzji) używając wyłącznie istniejących komórek pamięci, bez tworzenia nowych. Inaczej mówiąc, będziemy zmuszeni do manipulowania wyłącznie wskaźnikami i to jest jedyne narzędzie, jakie dostaniemy do ręki!

Zakładamy tym samym użycie podczas tworzenia listy metody dorzuci.


Wyszukiwarka

Podobne podstrony:
ALG 4 94 Rozdział 5. Struktury danych5.1. Listy jednokierunkowe Lista jednokierunkowa jest oszczędną
ALG4 114 Rozdział 5. Struktury danych stan—ZAKOŃCZ; else { przcd=po; po=po->nastepny; I Różnica
ALG4 124 Rozdział 5. Struktury danych Co jednak z dołączaniem elementów do listy? Poniżej są omówio
ALG4 144 Rozdział 5. Struktury danych studia dotyczące drzew można znaleźć w zasadzie w większości
ALG4 154 Rozdział 5. Struktury danych weźmy pod uwagę następującą grupę słów: KROKUS, KROSNO, KRAWI
ALG8 118 Rozdział 5. Struktury danych if(pŁzed==NULL) // wstawiamy na początek listy ( inf_ptr[nr].
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
ALG2 102___Rozdział 5. Struktury danych I ELEMENT *q=inf.głowa; if (pusta()) cout << "(l
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
ALG2 112 Rozdział 5. Struktury danych 112 Rozdział 5. Struktury danych //rekord informacyjny listy
ALG6 116 Rozdział 5. Struktury danych Iisla2.li int alfabetycznie(ELEMENT *q],ELEMENT *q2) { II czy
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
ALG2 122 Rozdział 5. Struktury danych Czerniak zarabia 3000zl Wynik usunięcia rekordu pracownika za
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
ALG4 134 Rozdział 5. Struktury danyct Jak to zwykle bywa, możliwych implementacji kolejek jest co n

więcej podobnych podstron