APP 11 Dynamiczne Struktury Danych

background image

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.

background image

Dynamiczne struktury danych 2

Definicja.

Dynamiczna struktura danych jest

zespołem elementów, najczęściej nazywanych

węzłami

, 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.

background image

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ć

tylko

na obiekty utworzone dynamicznie.

Zmienne typów wskaźnikowych ogólnych

wskazują na

zadeklarowane obiekty, podprogramy, albo do
danych utworzonych przez alokatory.

background image

Dynamiczne struktury danych 4

Typy wskaźnikowe ograniczone

Zmienne do których odwołujemy się przez wskaźniki

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

.

background image

Dynamiczne struktury danych 5

type Wezel;
type Wskaznik is access Wezel;
type Wezel is

record
Klucz : Typ_Klucz;
Nastepny : Wskaznik;
Dane : Informacje:
end record;

Wskaznik jest typem

wskaźnikowym związanym z

typem Wezel.

Każdy typ wskaźnikowy zawiera

wartość null, która nic nie

wskazuje.

Klucz

null

Dane

background image

Dynamiczne struktury danych 6

Wsk_Listy : Wskaznik;

Jest to definicja zmiennej wskaźnikowej związanej

z typem Wezel. 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 typu Wezel.

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;

background image

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);

background image

Dynamiczne struktury danych 8

Wsk_Listy

Klucz

null

Dane

Q

W

E

R

Wsk_Listy

Y

null

Y

null

T

Lista
liniowa

background image

Dynamiczne struktury danych 9

Program.

Lista_Liniowa

Wstawianie nowego węzła po wybranym

węźle

background image

Dynamiczne struktury danych 10

Aktualny =

null

Poprzedni =

null

Nowy =

null

Sytuacja po wejściu do procedury

Q

W

E

R

Wsk

Y

null

Y

null

T

background image

Dynamiczne struktury danych 11

Q

W

E

R

Wsk

Y

null

Y

null

T

O

Nowy

Poprzedni =

null

Aktualny

Sytuacja po wykonaniu instrukcji

Nowy_Nastepny := Aktualny_Nastepny

background image

Dynamiczne struktury danych 12

Q

W

E

R

Wsk

Y

null

Y

null

T

O

Nowy

Poprzedni =

null

Aktualny

Sytuacja przed wyjściem z procedury

background image

Dynamiczne struktury danych 13

A

C

B

A

C

B

Definicja.

Struktura drzewiasta

, albo

drzewo

o

typie podstawowym T jest

1. Strukturą pustą, albo
2. Węzłem typu T ze skończoną ilością dowiązanych,

rozłącznych struktur drzewiastych o tym samym
typie podstawowym, które nazywamy

poddrzewami

.

A jest

przodkiem

(bezpośrednim) B, natomiast B jest

potomkiem

(bezpośrednim) A.

Definicja.

Drzewem uporządkowanym

jest drzewo,

w którym gałęzie są uporządkowane.

background image

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 binarnym

nazywamy 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.

background image

Dynamiczne struktury danych 15

Klucz

Dane

L

P

Wsk_Drzewa

Klucz

Dane

L

P

Klucz

Dane

L

P

Klucz

Dane

null null

Klucz

Dane

null null

Klucz

Dane

null null

Klucz

Dane

null null

Klucz

Dane

P

null

Klucz

Dane

P

null

Poziom 1

Poziom 2

Poziom 3

Poziom 4

Korzeń

Węzeł wewnętrzny

Liść

background image

Dynamiczne struktury danych 16

Program.

Drzewo_Binarne

Program.

Wskazniki_Integer

Program.

Wsk_Ograniczone


Document Outline


Wyszukiwarka

Podobne podstrony:
Dynamiczne struktury danych
dynamiczna struktura danych
Podstawy programowania II 5 Dynamiczne struktury danych(1)
DYNAMICZNE STRUKTURY DANYCH
2002, ASD k1 11.12.2002, Kolokwium ALGORYTMY I STRUKTURY DANYCH
Algorytmy i struktury danych Wykład 1 Reprezentacja informacji w komputerze
Algorytmy i struktury danych Wykład 3 i 4 Tablice, rekordy i zbiory
Algorytmy i struktury danych, AiSD C Lista04
Algorytmy i struktury danych 08 Algorytmy geometryczne
Instrukcja IEF Algorytmy i struktury danych lab2
Algorytmy, struktury danych i techniki programowania wydanie 3
Algorytmy i struktury danych 1
Cw 5 Struktury Danych Materiały dodatkowe
Ściaga sortowania, algorytmy i struktury danych
ukl 74xx, Informatyka PWr, Algorytmy i Struktury Danych, Architektura Systemów Komputerowych, Archit
cw 0 1, pwr, informatyka i zarządzanie, Informatyka, algorytmy i struktury danych
AIDS w7listy, studia, Semestr 2, Algorytmy i struktury danych AISD, AIDS

więcej podobnych podstron