ALG0

ALG0



140 Rozdział 5. Struktury danych

porządek. Czy czasem owa procedura nie jest na tyle kosztowna, że ewentualny | zysk z użycia steily nie jest już tak oczywisty? Na szczęście okazuje się, że nie. I Wszelkie algorytmy operujące na stercie wykonują się wprost proporcjonalnie do I długości drogi odwiedzanej podczas przechodzenia przez drzewo binarne repre- I zentujące stertę. Co można powiedzieć o tej długości wiedząc, że drzewo binarne 1 jest kompletne? Na przykład to, iż dowolny wierzchołek jest odległy od wierz- I chołka (korzenia) o co najwyżej log?/V węzłów! Z tego właśnie powodu algo- i rytmy „stertowe” wykonują się na ogół w czasie „logarytmicznym”. Jest to dobry I wynik decydujący często o użyciu tej, a nie innej struktury' danych.

Po tak długim wstępie warto wreszcie zaprezentować kilka linii kodu w C++, które lepiej przemówią niż przewlekłe wyjaśnienia. Definicja klasy I Sterta1 jest następująca:

sterta.h

elass sterta

I

private: int *t;

int L;    // ilość elementów

public:

Sterta(int nMax)    // prosty konstruktor

(

t-new int!nMax+l);

L=0;

)

void wstaw(int x); int obsłuż(); void DoGoryl); void NaDol(); void pisz ();

); // koniec definicji klasy Sterta

Konstruktor klasy tworzy tablicę, w której będą zapamiętywane elementy -1[0] I jest nieużywane, stąd deklaracja tablicy o rozmiarze nMax+l, a nie nMcix (jest I to szczegół implementacyjny ukryty przed użytkownikiem).

Na początek zajmijmy się wstawieniem nowego elementu do sterty;

void Sterta::wstaw(int x)

{

t[++L)=x;

DoGory(); ł

Procedura DoGory była już wcześniej wzmiankowana: zajmuje się ona przywróceniem porządku w stercie po dołączeniu na koniec tablicy t nowego elementu.

1

Aby nie rozwlekać kodu nadmiernym generalizowaniem, podany zostanie przykład dla sterty liczb całkowitych.


Wyszukiwarka

Podobne podstrony:
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
ALG0 110 Rozdział 5. Struktury danych Rysunek 5-9 zawiera już kilka nowości w porównaniu z tym, co
ALG0 130 Rozdział 5. Struktury danych Symboliczny stos znajdujący się pod każdą z sześciu grup inst
ALG2 142 Rozdział 5. Struktury danych a ż do momentu znalezienia właściwego dlań miejsca. Popatrzmy
ALG6 156 Rozdział 5. Struktury danya Proces przechadzania się po drzewie nie jest bynajmniej zakońc
ALG6 116 Rozdział 5. Struktury danych Iisla2.li int alfabetycznie(ELEMENT *q],ELEMENT *q2) { II czy
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
ALG0 100 Rozdział 5. Struktury danyi z tych przypadków w istniejącej liście trzeba znaleźć miejsce
ALG2 102___Rozdział 5. Struktury danych I ELEMENT *q=inf.głowa; if (pusta()) cout << "(l
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
ALG2 112 Rozdział 5. Struktury danych 112 Rozdział 5. Struktury danych //rekord informacyjny listy
ALG4 114 Rozdział 5. Struktury danych stan—ZAKOŃCZ; else { przcd=po; po=po->nastepny; I Różnica
ALG8 118 Rozdział 5. Struktury danych if(pŁzed==NULL) // wstawiamy na początek listy ( inf_ptr[nr].
ALG2 122 Rozdział 5. Struktury danych Czerniak zarabia 3000zl Wynik usunięcia rekordu pracownika za
ALG4 124 Rozdział 5. Struktury danych Co jednak z dołączaniem elementów do listy? Poniżej są omówio

więcej podobnych podstron