są zespołem określonej liczby zmiennych o wspólnej nazwie, które p

Transkrypt

są zespołem określonej liczby zmiennych o wspólnej nazwie, które p
Τ
Struktury statyczne
Tablice jednowymiarowe (wektory):
są zespołem określonej liczby zmiennych o wspólnej
nazwie, które ponumerowano liczbami naturalnymi
− każda z nich ma przypisany na stałe tzw. indeks,
Τ
− zmienne
1
− indeksy
2
3
4
5
6
7
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
− indeksy
4
5
6
7
Zmienną X nazywamy wtedy zmienną indeksową i wskazanie
elementu tablicy wymaga odczytania jej aktualnej wartości
1
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
2
start
Użyte struktury danych:
tablica jednowymiarowa T o długości co najmniej N,
zmienna N do przechowania ilości liczb,
zmienna indeksowa K do sterowania iteracją i
pomocnicza zmienna S do przechowywania wyniku.
S←0
K←1
S ← S + T(K)
1. S ← 0 (ustalenie początkowej wartości sumy),
2. K ← 1 (ustalenie początkowej wartości zmiennej indeksowej),
3. wykonaj co następuje N razy:
3.1. S ← S + T(K),
3.2. K ← K + 1,
4. odczytaj wartość zmiennej S.
K←K+1
NIE
K=N
TAK
po zakończeniu działania
algorytmu zmienna S ma wartość
sumy N liczb z tablicy T
stop
3
Algorytm sortowania bąbelkowego N liczb
zapamiętanych w tablicy V :
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
4
Tablice dwu – i więcej wymiarowe (macierze):
są zespołem określonej liczby zmiennych o wspólnej
nazwie, które oznaczono dwoma lub więcej indeksami ,
Użyte struktury danych:
tablica jednowymiarowa V o długości co najmniej N,
zmienna N do przechowania ilości liczb,
zmienna indeksowa X do sterowania iteracją wewnętrzną i
pomocnicza zmienna U.
mogą przechowywać nie większą od ich rozmiaru liczbę
elementów zbioru danych jednakowego typu zgodnego z
zadeklarowanym typem tablicy
1. wykonaj co następuje N − 1 razy:
1.1. X ← 1,
1.2. dopóki X < N , wykonuj co następuje,
1.2.1. jeśli V(X + 1) < V(X) to:
U ← V(X); V(X) ← V(X + 1); V(X + 1) ← U;
1.2.2. X ← X + 1.
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
3
lub użycie nazwy zmiennej o typie zgodnym z indeksem, np. T(X)
Algorytm sumowania N liczb zapamiętanych w tablicy T :
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
2
Indeks może być określony przez bezpośrednie podanie wartości
w odwołaniu do elementu tablicy, np. T(6),
− nazwa
15 11 24 36 17 15 51
− zmienne
1
W zapisie symbolicznym T(6) oznacza 6 zmienną w tablicy T
mogą przechowywać nie większą od ich długości
liczbę elementów zbioru danych jednakowego typu
zgodnego z zadeklarowanym typem tablicy
Np. tablica T :
− nazwa
15 11 24 36 17 15 51
nazwa - W
1
2
3
4
5
6
7
- indeksy kolumn
1 15 11 24 36 17 15 51
Np. tablica W :
2 14 32 28 26 19 20 43
zmienne
3 11 16 13 31 10 15 41
indeksy wierszy
5
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
6
1
Algorytm sumowania NxM liczb zapamiętanych w tablicy W :
Użyte struktury danych:
tablica dwuwymiarowa W o rozmiarze co najmniej NxM, zmienne N i M
do przechowania liczby zajętych „wierszy’ i „kolumn”, zmienna indeksowa K
do sterowania iteracją zewnętrzną, zmienna indeksowa L do sterowania iteracją
wewnętrzną i pomocnicza zmienna S do przechowywania wyniku.
W zapisie symbolicznym W(2, 5) oznacza zmienną w tablicy W
położoną umownie na przecięciu 2. wiersza i 5. kolumny
W
1
2
3
4
6
5
1. S ← 0 (ustalenie początkowej wartości sumy),
2. K ← 1 (ustalenie początkowej wartości 1. zmiennej indeksowej),
3. wykonaj co następuje N razy:
3.1. L ← 1 (ustalenie początkowej wartości 2. zm. indeksowej),
3.2. wykonaj co następuje M razy:
3.2.1. S ← S + W(K, L),
3.2.2. L ← L + 1,
3.3 K ← K + 1,
4. odczytaj wartość zmiennej S.
7
1 15 11 24 36 17 15 51
2 14 32 28 26 19 20 43
3 11 16 13 31 10 15 41
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
7
start
są zespołem określonej liczby zmiennych różnych typów,
które mają własne nazwy oraz dodatkowo nazwę całego
rekordu (te zmienne są nazywane polami rekordu),
K←1
mogą przechowywać określoną liczbę elementów zbioru
danych o różnych typach, ale typ elementu musi być zgodny
z zadeklarowanym typem pola.
L←1
iteracja wewnętrzna
L←L+1
S ← S + W(K, L)
NIE
L=M
K←K+1
Np. rekord R :
po zakończeniu działania
algorytmu zmienna S ma
wartość sumy liczb z N
wierszy i M kolumn tablicy W
TAK
NIE
8
Rekordy:
S←0
iteracja zewnętrzna
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
K=N
TAK
nazwa rekordu - R
A
12
B
ala
C
7
D
:
pola
nazwy pól (zmiennych)
stop
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
9
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
Struktury dynamiczne (implementacja wskaźnikowa)
W zapisie symbolicznym B.R oznacza pole
(zmienną) o nazwie B z rekordu o nazwie R.
Zmienne wskaźnikowe (wskaźniki):
Różne rodzaje struktur statycznych można łączyć ze sobą
wartością nadawaną zmiennej wskaźnikowej jest adres, pod
którym można znaleźć w pamięci inną zmienną określonego typu,
Można zadeklarować np. tablicę rekordów
i odwoływać się potem do pól w indeksowanych rekordach,
np. B.U(3)
aby można było zapisać lub odczytać element danych w
zmiennej wskazywanej, trzeba znać jej adres, czyli odczytać
wartość zmiennej, która na nią wskazuje, tzw. wskaźnika.
U
1
2
3
4
A
12
9
41
24
B
ala
C
7
1
4
5
D
:
&
@
?
nazwa wskaźnika
P adres
ma kot bez
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
10
7
11
wartość zmiennej wskazanej
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
12
2
W zapisie symbolicznym [P] oznacza zmienną wskazaną
wartością (adresem) wskaźnika P
P
Czym różni się posługiwanie się adresami od posługiwania się
nazwami zmiennych?
X
Y
7
P
2
S
7
X←Y
X
[P] ← [S]
P
Y
2
7
2
P
S
2
2
S
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
2
13
Wskaźnik może zawierać nie tylko adres pojedynczej
zmiennej, ale także adres struktury danych np. rekordu.
S
2
S
7
2
P
[P] ← [S]
P
P←S
2
2
S
7
2
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
14
wskaźnik na 1. rekord
Typ zmiennej wskaźnikowej musi zawsze zawierać
dodatkowo określenie rodzaju obiektu, na który ta zmienna
może wskazywać.
G adres
pole kluczowe A pole dodatkowe B -
Jeśli umieścimy w rekordzie co najmniej jedno pole typu
wskaźnikowego, to uzyskamy możliwość budowania
dynamicznych struktur wskaźnikowych.
pole wskaźnikowe C -
Takie struktury powstają z identycznych rekordów o takiej
samej liczbie, nazwach i typach pól, wśród których jest co
najmniej jedno pole wskaźnikowe.
11
8
5
„ala”
„ma”
„kota”
NIL
adres
pole wskaźnikowe D - adres
adres
rekord 1
rekord 2
adres
NIL
rekord 3
NIL – symboliczny adres pusty
Wartością tego pola jest adres innego rekordu w strukturze
lub symboliczny adres pusty – NIL.
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
15
W zapisie symbolicznym A.[P] oznacza pole A w rekordzie
wskazanym wartością (adresem) wskaźnika P
Ulega wtedy zmianie wewnętrzną struktura wskazań, która
decyduje o drogach docierania do poszczególnych rekordów.
A.[P.[P.[X]]] ← 21
W oparciu o możliwość kreowania w pamięci nowych
rekordów o zadanym schemacie i zwalniania miejsca
zajmowanego przez niepotrzebne już rekordy można
zdefiniować podstawowe operacje, za pomocą których można
zmieniać liczbę rekordów w strukturze dynamicznej w trakcie
działania algorytmu:
21
A.[X]
A.[P.[X]]
A.[P.[P.[X]]]
P.[X]
P.[P.[X]]
P.[P.[P.[X]]]
A – pole kluczowe P – pole wskaźnikowe
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
16
W trakcie działania algorytmu można łatwo modyfikować
dynamiczną strukturę wskaźnikową poprzez zmianę wartości
pól wskaźnikowych w rekordach: poprzez podstawianie
wartości jednych wskaźników pod wartości innych.
Do pól rekordów w strukturze dynamicznej trzeba
odwoływać się za pomocą wskaźników:
X
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
X – wskaźnik na 1. rekord
WSTAW (ang. INSERT) i USUŃ (ang. DELETE)
17
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
18
3
P.[T] ← P.[S]
WSTAW ( S ) – dołącz w miejscu wskazanym w strukturze
wskaźnikiem S nowy rekord, który wcześniej utworzono
w pamięci wg określonego dla tej struktury schematu
S
T
Przykładowa realizacja operacji WSTAW ( S )
P.[S]
T – wskaźnik pomocniczy
P.[T]
Utwórz nowy rekord pod wskazaniem T
P.[S] ← T
S
G
S
T
T
A.[G]
P.[G]
P.[S]
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
19
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
T ← P.[S]
USUŃ ( S ) – odłącz od struktury rekord wskazywany
polem wskaźnikowym rekordu wskazanego przez S
i zwolnij zajmowane przez niego miejsce w pamięci
S
20
T
Przykładowa realizacja operacji USUŃ ( S )
P.[S]
T – wskaźnik pomocniczy
P.[S] ← P.[T]
S
G
T
S
T
A.[G]
P.[G]
P.[S]
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
21
P.[T]
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
22
Zwolnij miejsce w pamięci wskazane prze T
T ← NIL
T
Możliwość użycia w trakcie działania algorytmu operacji
WSTAW i USUŃ oraz możliwość zmiany powiązań pomiędzy
rekordami poprzez podstawianie wartości pól wskaźnikowych
decyduje o tym, że takie struktury wskaźnikowe są strukturami
dynamicznymi.
Jarosław Sikorski - BUDOWA i ANALIZA ALGORYTMÓW, WIT 2006 r.
23
4