Listy, kolejki, stosy

Podobne dokumenty
Wysokość drzewa Głębokość węzła

Drzewa poszukiwań binarnych

Porządek symetryczny: right(x)

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych

Drzewa wyszukiwań binarnych (BST)

Wykład 2. Drzewa zbalansowane AVL i 2-3-4

Wykład 6. Drzewa poszukiwań binarnych (BST)

Wykład 2. Drzewa poszukiwań binarnych (BST)

Struktury danych: stos, kolejka, lista, drzewo

Drzewo. Drzewo uporządkowane ma ponumerowanych (oznaczonych) następników. Drzewo uporządkowane składa się z węzłów, które zawierają następujące pola:

Drzewa czerwono-czarne.

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

Drzewa poszukiwań binarnych

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

dr inż. Paweł Myszkowski Wykład nr 11 ( )

Dynamiczne struktury danych

Algorytmy i Struktury Danych

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych:

Podstawowe struktury danych

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

Algorytmy i Struktury Danych

Programowanie obiektowe

Wstęp do programowania

Stos LIFO Last In First Out

Wykład 8. Drzewa AVL i 2-3-4

Struktury Danych i Złożoność Obliczeniowa

Algorytmy zachłanne. dr inż. Urszula Gałązka

Algorytmy i struktury danych. wykład 5

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

Tadeusz Pankowski

Każdy węzeł w drzewie posiada 3 pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste.

Programowanie obiektowe

ALGORYTMY I STRUKTURY DANYCH

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych.

Abstrakcyjne struktury danych - stos, lista, drzewo

Koszt zamortyzowany. Potencjał - Fundusz Ubezpieczeń Kosztów Algorytmicznych

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych:

. Podstawy Programowania 2. Drzewa bst - część druga. Arkadiusz Chrobot. 12 maja 2019

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Wyszukiwanie w BST Minimalny i maksymalny klucz. Wyszukiwanie w BST Minimalny klucz. Wyszukiwanie w BST - minimalny klucz Wersja rekurencyjna

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych

Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST)

Wstęp do programowania. Drzewa podstawowe techniki. Piotr Chrząstowski-Wachtel

Podstawy Informatyki. Wykład 6. Struktury danych

Wykład 3. Drzewa czerwono-czarne

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

Teoretyczne podstawy informatyki

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

ALGORYTMY I STRUKTURY DANYCH

Algorytmy i Struktury Danych, 9. ćwiczenia

Zaliczenie. Egzamin. lub. Wykład. Zaliczenie. Ćwiczenie. 3 zadania. Projekty. Ocena. Na ocenę

. Podstawy Programowania 2. Drzewa bst - część pierwsza. Arkadiusz Chrobot. 22 maja 2016

Podstawy Informatyki. Metody dostępu do danych

Dynamiczne struktury danych

Lista liniowa dwukierunkowa

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

INFORMATYKA. Podstawy programowania w języku C. (Wykład) Copyright (C) 2005 by Sergiusz Sienkowski IME Zielona Góra

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

UNIWERSYTET GDAŃSKI MATERIAŁY DYDAKTYCZNE DO PRZEDMIOTU MATEMATYKA DYSKRETNA. pod redakcją: Hanna Furmańczyk Karol Horodecki Paweł Żyliński

WSTĘP DO INFORMATYKI. Struktury liniowe

Programowanie i struktury danych 1 / 44

Programowanie obiektowe

Struktury danych. przez użytkownika, jak to ma miejsce w przypadku zwykłych zmiennych statycznych.

Drzewa podstawowe poj

Sortowanie - wybrane algorytmy

Algorytmy i struktury danych Struktury danych IS/IO, WIMiIP

Sortowanie bąbelkowe

Wykład X. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2016 Janusz Słupik

Algorytmy i struktury danych Struktury danych - drzewa IS/IO, WIMiIP

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

STRUKTURY DANYCH I ZŁOŻONOŚĆ OBLICZENIOWA STRUKTURY DANYCH I ZŁOŻONOŚĆ OBLICZENIOWA. Część 3. Drzewa Przeszukiwanie drzew

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

Programowanie komputerów. Jacek Lach Zakład Oprogramowania Instytut Informatyki Politechnika Śląska

Wstęp do programowania

Drzewo binarne BST. LABORKA Piotr Ciskowski

Podstawowe struktury danych

Wykłady z Matematyki Dyskretnej

Definicja pliku kratowego

PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

Algorytmy i struktury danych

7a. Teoria drzew - kodowanie i dekodowanie

Ogólne wiadomości o grafach

Struktury dynamiczne

Laboratorium nr 7 Sortowanie

Teoretyczne podstawy informatyki

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

Haszowanie. dr inż. Urszula Gałązka

Abstrakcyjne struktury danych w praktyce

INFORMATYKA DANE.

Algorytmy i. Wykład 3: Stosy, kolejki i listy. Dr inż. Paweł Kasprowski. FIFO First In First Out (kolejka) LIFO Last In First Out (stos)

Algorytmy i Struktury Danych.

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

Transkrypt:

Listy, kolejki, stosy

abc Lista O Struktura danych składa się z węzłów, gdzie mamy informacje (dane) i wskaźniki do następnych węzłów. Zajmuje tyle miejsca w pamięci ile mamy węzłów O Gdzie można wykorzystać: O stos O kolejka, O grafy

abc Lista jednokierunkowa Head głowa Dane nast Dane nast Dane nast Węzeł Dane nast Tail Ogon Dane nast nil

abc Lista dwukierunkowa Head głowa Dane nast pop Dane nast pop Dane nast pop Dane nast pop Tail Ogon Dane nast pop nil nil

abc Lista cykliczna jednokierunkowa Head głowa Tail Ogon Dane nast Dane nast Dane nast Dane nast Dane nast

abc Lista cykliczna dwukierunkowa Head głowa Tail Ogon Dane nast pop Dane nast pop Dane nast pop Dane nast pop Dane nast pop

abc Lista z przeskokami 1 2 3 4 5 6 7 8 z równo rozmieszczonymi węzłami 1 3 4 2 5 6 7 8 z nierówno rozmieszczonymi węzłami

abc Listy samoorganizujące się Zalety: Czas dostępu do elementów zwykle szybszy niż w tradycyjnych listach.

abc Listy samoorganizujące się metody O Metoda przesuwania na początek znaleziony element umieszczamy na początku O Metoda transpozycji znaleziony element jest zamieniony z tym, który go poprzedza. Wówczas elementy najczęściej używane znajdują się na początku listy. O Metoda zliczania każdy element ma pole licznik, które się zwiększa po znalezieniu elementów, pola te służą do porządkowania.

abc Operacja na listach O Zakładamy, że operujemy na listach nieposortowanych i dwukierunkowych.

abc Przeszukiwanie listy

abc Wstawianie elementów

abc Usuwanie elementów

abc Upraszcza warunki brzegowe Oznaczenie nil(l) Wstawiamy na koniec lub początek listy jednokierunkowej Wartownik Jest to element listy Łatwo znajdziemy początek lub koniec listy Spina końce listy dwukierunkowej

abc Przeszukiwanie listy z wartownikiem

abc Wstawianie elementów z wartownikiem

abc Usuwanie elementów

klucz następny poprzed. abc Lista jako tablica O Wielowymiarowa tablica 1 2 3 4 5 6 7 następny 3 7 / 5 klucz 4 2 8 6 poprzedni / 2 7 3 O Jednowymiarowa tablica 1 2 3 4 5 6 7 8 9 1 0 11 12 13 14 15 16 17 18 19 20 21 4 7 / 2 19 4 8 / 19 6 13 7

Kolejka Dostęp z dwóch końców FIFO First in First Out Podobnie jak w sklepie

Operacje na kolejkach enqueue wstawienie do kolejki 3 Wynik 1 2 1 2 3 Wynik dequeue pobranie elementu z kolejki 1 2 3 2 3

Operacje - pseudokod Dokładanie elementu Usuwanie elementu kolejki

Stos Dostęp z jednego końca LIFO Last in First Out Podobnie jak stos książek, naleśników itd..

Operacje na stosie push połóż 3 Wynik 3 pop zdejmij 3 Wynik 2 2 2 2 1 1 1 1

Operacje - pseudokod Sprawdzanie czy stos jest pusty Operacja push

Operacje - pseudokod Operacja pop

Drzewa ukorzenione Korzeń Węzeł T.root / / / / / / / / / / Liście

Drzewo binarne / - brak wskaźnika T.root - korzeń / p wskaźnik na ojca / right prawy syn / / / / / / / / left lewy syn

Podejście na lewo syn na prawo brat Liczba synów Nie przekracza pewnej stałej liczby Każdy węzeł ma p wskaźnik na ojca x.left-child wskaźnik na najbardziej lewego syna x.right-sibling wskaźnik na najbliższego na prawo brata

Reprezentacja na lewo syn, na prawo brat T.root / / / / / / / / / / / / /

Drzewa wyszukiwań binarnych BST binary search tree. Struktura Węzeł x ma elementy Własność klucza węzła x Key (klucz) Drzewo binarne left lewy syn right prawy syn klucz (left) klucz(x) oraz klucz(right) klucz(x) p - ojciec

Drzewa wyszukiwań binarnych x 5 y z 4 6 1 4 9

Operacje na drzewach wyszukiwań binarnych

BST wypisanie elementów O Metoda inorder- klucz korzenia wypisuje się pomiędzy wartościami z jego lewego poddrzewa oraz prawego podrzewa. O metoda preorder - klucz korzenia wypisanyj jest przed wypisaniem wartości znajdujących się w obu poddrzewach. O metoda postorder - klucz korzenia po wypisaniu wartości znajdującech się w poddrzewach.

BST - Preorder PREORDER-TREE-WALK(x) if x!= NIL wypisz x.klucz PREORDER-TREE-WALK(x.left) PREORDER-TREE-WALK(x.right)

BST - Inorder INORDER-TREE-WALK(x) if x!= NIL INORDER-TREE-WALK(x.left) wypisz x.klucz INORDER-TREE-WALK(x.right) Twierdzenie O Jeśli x jest korzeniem poddrzewa o n węzłach, to wykonanie INORDER-TREE- WALK(x) odbywa się w czasie (n).

BST - Postorder POSTORDER-TREE-WALK(x) if x!= NIL POSTORDER-TREE-WALK(x.left) POSTORDER-TREE- WALK(x.right) wypisz x.klucz

BST - przechodzenie drzewa zaczynamy od korzenia 14 6 20 4 9 18 21 2 5 11 O Preorder: O 14, 6, 4, 2, 5, 9, 11, 20, 18, 21 O Inorder: O 2, 4, 5, 6, 9, 11, 14, 18, 20, 21, O Postorder: O 2, 5, 4, 11, 9, 6, 18, 21, 20, 14

BST wyszukiwanie - rekurencyjnie

BST wyszukiwanie - iteracyjne

BST wyszukiwanie - przykład 14 6 20 4 9 18 21 2 5 11 Szukamy węzła o wartości klucza 9. TREE-SEARCH(14,9) 9<14 TREE-SEARCH(6,9) 9>6 TREE-SEARCH(9,9) 9=9 return 9

BST Minimum, Maksimum Koszt = O(h), gdzie h to wysokość drzewa.

BST Poprzednik

BST Następnik

BST - wstawianie

BST wstawianie - przykład 14 14 <17 6 20 17 <20 4 9 18 21 2 5 11 17 17<18

BST Usuwanie (3 przypadki) 1. Jeśli z nie ma lewego syna to zastępujemy z przez jego prawego syna (być może równego NIL). Jeśli prawy syn jest równy NIL to z jest liściem a jeśli jest różny od NIL to z ma tylko jednego prawego syna. 2. Jeśli z ma tylko jednego lewego syna, to zastępujemy z przez jego lewego syna.

BST Usuwanie, przypadek 1 i 2 q q NIL z r r Przypadek 2. q q z l l NIL

BST - Usuwanie 3. Jeśli nie ma zarówno lewego, jak i prawego syna znajdujemy węzeł y będący następnikiem z w prawym poddrzewie z. Węzeł y nie ma lewego syna. Chcemy wyłuskać y z jego aktualnego położenia i zastąpić nim węzeł z w drzewie. a) Jeśli y jest prawym synem z, to zastępujemy z przez y, pozostawiając prawego syna y bez zmian. b) W przeciwnym razie y znajduje się w prawym poddrzewie z, ale nie jest prawym synem z. W tym przypadku najpierw zastępujmy y przez jego prawego syna, a potem zastępujemy z przez y.

BST usuwanie, przypadek 3 Przypadek 3.a q q z y l y l x NIL x Przypadek 3.b q q q z z y y l r l NIL r l r y x x NIL x

BST przesuwanie poddrzew procedura TRANPLANT

BST Usuwanie węzła

Bibliografia Książki Cormen Thomas; Leiserson Charles; Rivest Ronald; Stein Clifford, Wprowadzenie do Algorytmów, Wydawnictwo Naukowe PWN, Warszawa 2012 Sedgewick Robert, Algorytmy w C++, Wydawnictwo RM, Warszawa 1999, Drozdek Adam, C++. Algorytmy i Struktury Danych, Wydawnictwo Helion, Gliwice 2004, Wróblewski Piotr, Algorytmy, Struktury Danych i Techniki Programowania, Wydawnictwo Helion, Gliwice 2010, Rysunki: Slajdy 20 i 24: demotywatory.pl, Dostęp: [28.10.2017] Pozostałe: opracowanie własne