1 / 16

Dynamiczne struktury danych 1

Dynamiczne struktury danych 1. Dotychczas poznane struktury danych, takie jak tablice i rekordy są nazywane statycznymi strukturami danych . Struktury takie mają stałe wymiary i strukturę przez cały czas swojego istnienia.

aloha
Download Presentation

Dynamiczne struktury danych 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Dynamiczne struktury danych 1 Dotychczas poznane struktury danych, takie jak tablice i rekordy są nazywane statycznymi strukturami danych. Struktury takie mają stałe wymiary i strukturę przez cały czas swojego istnienia. W wielu zastosowaniach dogodnie jest stosować struktury, które zmieniają skład, wymiary i strukturę podczas wykonywania programu. Typowymi przykładami są listy i drzewa, które rosną i kurczą się dynamicznie tzn. podczas wykonywania programu.

  2. Dynamiczne struktury danych 2 Definicja. Dynamiczna struktura danych jest zespołem elementów, najczęściej nazywanych węzłami(nodes), które w ogólnym przypadku reprezentowane są przez rekordy. Do konstrukcji dynamicznych struktur danych stosuje się wskaźniki (pointers). Mówimy więc, że wskaźniki są typu wskaźnikowego. Typy wskaźnikowe nie są strukturalne, a więc należą do typów skalarnych.

  3. Dynamiczne struktury danych 3 W Adzie mamy dwa rodzaje typów wskaźnikowych: • typy wskaźnikowe ograniczone • typy wskaźnikowe ogólne Typy wskaźnikowe są w Adzie nazywane po angielsku access types, co oddaje istotę wskaźnika, czyli zmiennej dającej dostęp (access) do wskazywanych danych. Zmienne typów wskaźnikowych ograniczonych mogą wskazywać tylkona obiekty utworzone dynamicznie. Zmienne typów wskaźnikowych ogólnych wskazują na zadeklarowane obiekty, podprogramy, albo do danych utworzonych przez alokatory.

  4. Dynamiczne struktury danych 4 Typy wskaźnikowe ograniczone Zmienne do których odwołujemy się przez wskaźniki są anonimowe i nazywane są zmiennymi dynamicznymi. Zmienna dynamiczna jest tworzona przez użycie alokatora przydzielającego pamięć dla tej zmiennej: Zmienna_Wskaznikowa := new Typ_Wskazywany; Wskaźniki ograniczone nie mogą wskazywać na dowolne zmienne. Typ zmiennej wskazywanej musi być podany w deklaracji typu wskaźnikowego. Typ wskaźnikowy ograniczony jest związany ze wskazywanym typem, nazywanym czasami typem bazowym.

  5. Dynamiczne struktury danych 5 type Wezel; type Wskaznik is access Wezel; type Wezel is record Klucz : Typ_Klucz; Nastepny : Wskaznik; Dane : Informacje: end record; Wskaznikjest typem wskaźnikowym związanym z typemWezel. Każdy typ wskaźnikowy zawiera wartośćnull, która nic nie wskazuje.

  6. Dynamiczne struktury danych 6 Wsk_Listy : Wskaznik; Jest to definicja zmiennej wskaźnikowej związanej z typemWezel. Zmienna ta ma domyślną wartośćnull, co oznacza, że nie wskazuje na żaden obszar pamięci. Dopiero wywołanie alokatora Wsk_Listy := new Wezel; powoduje, że zmienna ta wskazuje na obszar pamięci odpowiadający danej typuWezel. Jeżeli chcemy nadać wartości przechowywane w tym obszarze, to możemy napisać instrukcje: Wsk_Listy.Klucz := Wartosc_Klucz; Wsk_Listy.Dane := Wartosc_Dane;

  7. Dynamiczne struktury danych 7 Wartości można też nadać w instrukcji wywołującej alokator. Wsk_Listy := new Wezel'(Wartosc_Klucz, null, Wartosc_Dane); Jest to agregat kwalifikowany i nadawane są wartości wszystkim składowym rekordu, nawet wtedy, gdy niektóre mają wartości domyślne. Można również nadać wartość przy deklaracji zmiennej wskaźnikowej Wsk_Listy : Wskaznik := new Wezel' (Wartosc_Klucz, null, Wartosc_Dane);

  8. Dynamiczne struktury danych 8 Lista liniowa

  9. Dynamiczne struktury danych 9 Przykład Lista_Liniowa Wstawianie nowego węzła po wybranym węźle

  10. Dynamiczne struktury danych 10

  11. Dynamiczne struktury danych 11

  12. Dynamiczne struktury danych 12

  13. Dynamiczne struktury danych 13 Definicja.Struktura drzewiasta, albo drzewo o typie podstawowymTjest • Strukturą pustą, albo • Węzłem typuT ze skończoną ilością dowiązanych, rozłącznych struktur drzewiastych o tym samym typie podstawowym, które nazywamy poddrzewami. Ajest przodkiem (bezpośrednim)B, natomiastBjest potomkiem (bezpośrednim)A. Definicja.Drzewem uporządkowanym jest drzewo, w którym gałęzie są uporządkowane.

  14. Dynamiczne struktury danych 14 Definicja.Korzeń jest węzłem, który nie ma przodków. Definicja.Liściem nazywamy węzeł, który nie ma potomków. Definicja.Węzły, które nie są korzeniami ani liśćmi nazywamy węzłami pośrednimi. Definicja.Uporządkowanym drzewem binarnymnazywamy drzewo uporządkowane składające się ze skończonej liczby węzłów, przy czym może być puste, albo posiada korzeń z dwoma rozłącznymi poddrzewami binarnymi, nazywanymi lewym i prawym poddrzewem. Definicja.Drzewem dokładnie wyważonym nazywamy drzewo, w którym na każdym poziomie utworzono maksymalną możliwą liczbę węzłów.

  15. Dynamiczne struktury danych 15

  16. Dynamiczne struktury danych 16 PrzykładDrzewo_Binarne PrzykładWskazniki_Integer PrzykładWsk_Ograniczone

More Related