Struktury danych
i złożoność obliczeniowa Wykład 3.
Prof. dr hab. inż. Jan Magott
Struktury danych:
• stosy,
• kolejki,
• listy,
• kopce
zbudowane z użyciem tablic.
Podstawowe struktury danych (stosy)
PUSH(S,17)
PUSH(S,3)
Podstawowe struktury danych (stosy)
Podstawowe struktury danych (stosy)
POP(S)
Podstawowe struktury danych (stosy)
Podstawowe struktury danych (kolejki)
ENQUEUE(Q,17) ENQUEUE(Q,3) ENQUEUE(Q,5)
[Źródło CLRS, Wprowadzenie do
algorytmów]
Podstawowe struktury danych (kolejki)
DEQUEUE(Q)
Podstawowe struktury danych (kolejki)
Podstawowe struktury danych (kolejki)
Podstawowe struktury danych (listy)
Listy ze wskaźnikami (dynamiczne struktury danych):
• Jednokierunkowe,
• Dwukierunkowe,
• Posortowane,
• Nieposortowane.
Podstawowe struktury danych (listy)
7 4 2 11
Podstawowe struktury danych (listy)
Listy dwukierunkowe nieposortowane
Podstawowe struktury danych (listy)
Jaki jest koszt wstawienia elementu do listy
dwukierunkowej posortowanej?
Podstawowe struktury danych (listy)
Listy dwukierunkowe nieposortowane
Podstawowe struktury danych (listy)
Listy dwukierunkowe nieposortowane
Implementacja tablicowa w postaci:
• trzech tablic,
• jednej tablicy.
Kopce
Kopiec binarny jest prawie pełnym drzewem binarnym.
Pełne drzewo binarne
[1]
[2]
[6]
[4] [5]
[3]
[10]
[9]
[8]
[7]
[11] [12] [13] [14] [15]
[1]
[2]
[4] [5] [6]
[3]
[10]
[9]
[8]
[7]
Kopiec binarny jest prawie pełnym drzewem binarnym.
Prawie pełne drzewo binarne
Kopce
Kopiec binarny jest to prawie pełne drzewo binarne.
Rodzaje kopców:
typu max (wartość rodzica jest nie mniejsza niż dziecka),
typu min (wartość rodzica jest nie większa niż dziecka).
[1]
[2]
[6]
[4] [5]
[3]
[10]
[9]
[8]
[7]
17
14 11
8 14 5 4
2 6 9
Kopiec typu max
Kopce
[1]
[2]
[6]
[4] [5]
[3]
[10]
[9]
[8]
[7]
17
11 14
8 14 5 4
2 6 9
Kopce
[1]
[2]
[6]
[4] [5]
[3]
[10]
[9]
[8]
[7]
17
11 14
8 14 5 4
2 6 9
17 14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 11 8 14 5 4 2 6 9
Kopce
[1]
[2]
[4] [5] [6]
[3]
[10]
[9]
[8]
[7]
Kopce
[2] [1]
Kopce
Liście
Korzeń
Kopce
Liście
Korzeń
Kopce
[1]
[2]
[6]
[4] [5]
[3]
[10]
[9]
[8]
[7]
17
11 14
16 14 5 4
2 6 9
17 14
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 11 16 14 5 4 2 6 9
Własność
Operacje zamiany elementów rodzica i dziecka w tablicy nie zmieniają relacji incydencji
LEFT, RIGHT, PARENT między
pozycjami w tablicy.
Kopce
Przywracanie własności kopca
[1][2]
[6]
[4] [5]
[3]
[10]
[9]
[8]
17
11 i 5
l 8 14 r 5 4
2 6 9
[7]
[Źródło: CLRS, Wprowadzenie do algorytmów]
Kopce
Przywracanie własności kopca
[1]
[2]
[6]
[4] [5]
[3]
[10]
[9]
[8]
17
14 11
8 i 5 4
2 6 9
[7]
[1]
[2]
[6]
[4] [5]
[3]
[10]
[8] [9]
17
i 5 11
l 8 14 r 5 4
2 6 9
[7]
Kopce
Przywracanie własności kopca
[1]
[2]
[6]
[4] [5]
[3]
[10]
[9]
[8]
17
14 11
8 i 5 4
2 6 9
[7]
Kopce
[2]
[6]
[4] [5]
[3]
[10]
[8] [9]
17
14 11
8 i 5 4
2 6 9
[7]
[1]
[2]
[6]
[4] [5]
[3]
[10]
[8] [9]
17
14 11
8 9 4
2 6 5 i
[7]
Kopce
Przywracanie własności kopca
[1][2]
[6]
[4] [5]
[3]
[10]
[8] [9]
17
14 11
8 9 4
2 6 5 i
[7]
Kopce
14 17
1 2 3 4 5 6 7 8 9 10 11 5 11 5 12 9 6 16
[1]
[2]
[6]
[4] [5]
[3]
[10]
[8] [9]
11
14 17
5 11 12
9 6 16
[7]
5
To nie jest kopiec
typu max
Kopce
Budowanie kopca typu max (od dołu
budowane są coraz to większe kopce)
[1][2]
[6]
[4] [5]
[3]
[10]
[8] [9]
11
14 17
5 i 11 12
9 6 16
[7]
5 [Źródło: CLRS, Wprowadzenie do
algorytmów]
Kopce
Budowanie kopca typu max
[1]
[2]
[6]
[4] [5]
[3]
[10]
[8] [9]
11
14 17
5 i 11 12
9 6 16
[7]
5
[1]
[2]
[6]
[4] [5]
[3]
[10]
[8] [9]
11
14 17
5 i 16 12
9 6 11
[7]
5
Kopce
[1]
[2]
[6]
[4] [5]
[3]
[10]
[8] [9]
11
14 17
5 i 16 12
9 6 11
[7]
5
[1]
[2]
[6]
[4] [5]
[3]
[10]
[8] [9]
11
14 17
i 5 16 12
9 6 11
[7]
5
[1]
[2]
[6]
[4] [5]
[3]
[10]
[8] [9]
11
14 17
i 5 16 12
9 6 11
[7]
5
[1]
[2]
[6]
[4] [5]
[3]
[10]
[8] [9]
11
i 17 14
9 16 12
5 6 11
[7]
5
[1]
[2]
[6]
[4] [5]
[3]
[10]
[8] [9]
11
i 17 14
9 16 12
5 6 11
[7]
5
[1]
[2]
[6]
[4] [5]
[3]
[10]
[8] [9]
11
i 14 17
9 16 12
5 6 11
[7]
5
[1]
[2]
[6]
[4] [5]
[3]
[10]
[8] [9]
11
i 14 17
9 16 12
5 6 11
[7]
5
[1]
[2]
[6]
[4] [5]
[3]
[10]
[8] [9]
11
i 14 17
9 16 12
5 6 11
[7]
5
[1]
[2]
[6]
[4] [5]
[3]
[10]
[8] [9]
11
i 14 17
9 16 12
5 6 11
[7]
5
[1]
[2]
[6]
[4] [5]
[3]
[10]
[8] [9]
i 11
16 17
9 14 12
5 6 11
[7]
5
[1]
[2]
[6]
[4] [5]
[3]
[10]
[8] [9]
i 11
16 17
9 14 12
5 6 11
[7]
5
[1]
[2]
[6]
[4] [5]
[3]
[10]
[8] [9]
17
16 11
9 14 12
5 6 11
[7]
5
[1]
[2]
[6]
[4] [5]
[3]
[10]
[8] [9]
17
16 11
9 14 12
5 6 11
[7]
5
[1]
[2]
[6]
[4] [5]
[3]
[10]
[8] [9]
17
16 12
9 14 11
5 6 11
[7]
5