I Struktury algorytmów 1 Nieformalne środki opisu algorytmów 1.1

advertisement
I Struktury algorytmów
1 Nieformalne środki opisu algorytmów
1.1 Kompozycje imperatywne języka potocznego
1.1.1 Proste zdania rozkazujące
1.1.2 Złożone zdania rozkazujące
1.1.2.1 Instrukcje strukturalne i ich składowe
1.1.2.2 Dyskretność procesu wykonywania instrukcji
1.1.2.3 Kompozycja sekwencyjna
1.1.2.1 "Kompozycja synchroniczna
1.1.2.5 Kompozycje warunkowe (dwuwariantowe)
1.1.2.6 Kompozycja wyboru wielowariantowego
1.1.2.7 Kompozycja iteracyjna "dopóki"
1.1.2.8 Kompozycja iteracyjna ,.aż do"
I . 1.2.9 Zagnieżdżanie kompozycji algorytmicznych
1.1.2.10 Komentarze
L.1.3 ‘Konstrukcje linearne ze skokami
Ćwiczenia
1.2 Schematy Nassi-Shneidermana dla graficznego przedstawiania kompozycji algorytmicznych
1.2.1 Podstawy symboliki schematów N-S
1.2.2 Przykład
1.2.3 Ogólne zasady projektowania algorytmów w postaci schematów N-S
1.3 ‘Schematy blokowe (sieci działań)
1.3.1 Symbolika schematów blokowych
1.3.2 Przekład schematów N-S na schematy blokowe
1.3.3 Przykład prostego schematu blokowego
1.3.4 Konstrukcje ..ntestrukturalne"
1.4 Przykład procesu algorytmizacji - problem sortowania dwudzielnego
Ćwiczenia
2 Dane i typy wartości
2.1 Pojęcie danej
2.2 Rodzaje danych
2M Oznaczenia danych
2.4 Typy wartości i rodzaje ich zgodności
2.4.1 Zgodność typów wartości w instrukcjach przypisania
2.4.2 Zgodność typów wartości operandów w wyrażeniach
2.4.3 Określanie typu wartości danych
2.5. Formalna definicja typu wartości
2.5.1 Zbiór wartości
2.5.2 Zbiór operacji w typie wartości
2.5.3 Zbiór relacji weryfikowalnycli W typie wartości
2.6 Typy wartości w nieformalnych opisach algorytmów
2.6.1 Kilka uwag o typach całkowitoliczbowych
2.6.1.1 Liczby kardynalne i typ Kardynalne
2.6.1.2 Typ Naturalne
2.6.1.3 Liczby całkowite i typ Całkowite
2.6.2 Typy calkowitoliczbowe a typ Rzeczywiste
2.6.3 Typ Logiczne
2.6.3.1 Charakterystyka typu Logiczne
2.6.3.2 Zasady pierwszeństwa działań
2.6.3.3 Skrócony tryb obliczania wartości alternatyw i koniunkcji
2.6.3.4 Operowanie zmiennymi i wyrażeniami logicznymi
2.6.3.5 "Informacja logiczna w popularnych językach programowania
2.7 Arytmetyczne typy wartości w popularnych językach programowania
2.7.1 Typy calkowitoliczbowe
2.7.1.1 ‘Galeria typów całkowitoliczbowych
2.7.1.2 "Racjonalne podejście do wielości typów całkowitoliczbowych
2.7.2 Typy rzeczywiste
2.7.2.1 Typy rzeczywiste zmienn opozycyjne
2.7.2.2 * Galeria typów rzeczywistych zmiennopozycyjnych
2.7.2.3 "Typy rzeczywiste stalopozycyjne
Ćwiczenia
3 Przykłady nieformalnych opisów algorytmów
3.1 Od sekwencji do iteracji - anagram liczby dziesiętnej
3.1.1 Postawienie zadania
3.1.2 Rozwiązanie sekwencyjne
3.1.3 Rozwiązanie iteracyjne.
3.1.4 Zadanie z nieustaloną liczbą cyfr dziesiętnych
3.2 Obliczenia kalendarzowe i datowanie juliańskie
3.3 Przeliczanie współrzędnych kartezjańskich na biegunowe
Ćwiczenia
4 Procedury i funkcje
4.1 Procedura i instrukcja proceduralna
4.1.1 Intuicyjne pojęcie procedury
4.1.1.1 Idea modularyzacji
4.1.1.2 Paranietryzacjaopisu algorytmu
4.2 Składniki opisu procedury
4.2.1 Nagłówek procedury
4.2.1.1 Identyfikator procedury
4.2.1.2 Wykaz parametrów formalnych
4.2.2 Treść procedury
4.2.2.1 Treść procedury w notacji IPL
4.2.2.2 Klatka N-S dla treści procedury
4.2.2.3 Wykaz zmiennych "roboczych" procedury
4.2.3 Przykłady procedur
4.2.3.1 Wymiana wartości między zmiennymi
4.2.3.2 Pierwiastki trójmianu kwadratowego
4.2.4 Instrukcja proceduralna
4.2.4.1 Treść instrukcji proceduralnej
4.2.4.2 Instrukcja proceduralna w notacji IPL
4.2.4.3 Klatka N-S instrukcji proceduralnej
4.2.4.4 Przebieg wykonania instrukcji proceduralnej
4.3 Dalsze przykłady nieformalnych opisów algorytmów
4.3.1 Prymitywny algorytm sortowania
4.3.2 Przykład z pętlą ..dopóki"‘ - algorytm Euklidesa
4.4 Procedura funkcyjna (funkcja) i jej nazewnik
4.4.1 Nazewnik funkcji w wyrażeniu
4.4.2 Opis funkcji w IPL i N-S
4.4.2.1 Nagłówek opisu funkcji
4.4.2.2 Treść funkcji
4.4.2.3 Instrukcja określająca wartość wynikową nazewnika
4.4.3 Proces obliczania wartości nazewnika funkcji
4.4.4 Użycie nazewnika funkcji w wyrażeniach
4.4.5 Przykłady opisów funkcji
4.4.5.1 Algorytm Euklidesa
4.4.5.2 Prosta funkcja rzeczywista- wartość wielomianu 3. stopnia
4.4.5.3 Obliczanie wartości funkcji częściowej
4.4.5.4 Lokalizacja miejsca zerowego funkcji metodą bt sekcji
Ćwiczenia
Wejście i wyjście programu
5.1 Procedury wejścia i wyjścia
5.1.1 Pojęcie operacji wejścia i wyjścia. Symbolika N-S klatek tych operacji
5.1.2 Procedury wyjścia
5.1.3 Procedury wejścia
5.2 * Technologia projektowania wydawnictwa wyników programu
5.3 Organizacja procesu przyjmowania informacji z klawiatury - programowanie operacji wejściowych
Ćwiczenia
Informacja referencyjna i dane wskazywane
6.1 Wskazanie, wskaźnik, dana wskazywana
6.1.1 Informacja bezpośrednia a informacja referencyjna
6.1.1.1 Informacja bezpośrednia
6.1.1.2 Informacja referencyjna i jej rodzaje
6.1.1.3 Referencja adresowa. Adres danej a dostęp do danej
6.1.1.4 Referencja indeksowa
6.1.2 Typy wskazaniowe, wskaźniki i dane wskazywane
6.1.2.1 Typ wskazaniowy i jego identyfikacja
6.1.2.2 Zmienna wskazaniowa (wskaźnik)
6.1.2.3 Dana wskazywana. Zasady ilustracji graficznej
6.2 Przekazywanie argumentów procedur i funkcji "przez wskazanie"
6.2.1 Przekazywanie "przez wartość" wskazań na zmienne
6.2.2 Kodowanie przekazywania argumentu wynikowego "przez wskazanie"
6.2.3 ‘Kulisy trybu przekazywania parametrów przez zmienną do procedur i funkcji
6.2.4 *Pr7ekazywanie wskazań na zmienne ..przez zmienną‘‘
6.3 Dynamiczna alokacja danych wskazywanych
Ćwiczenia
Zadanie algorytmizaryjne i jego specyfikacja
7.1 Rodzaje zadań algorytmizacyjnych
7.2 Oczekiwana treść specyfikacji zadania
7.2.1 Specyfikacja instrukcji
7.2.2 Specyfikacja warunku
7.2.3 Specyfikacja procedury lub funkcji
7.2.3.1 Specyfikacja procedury niefunkcyjnej
7.2.3.2 Specyfikacja funkcji
7.2.4 Przykłady specyfikacji instrukcji
7.2.4.1 Przykłady wadliwych specyfikacji instrukcji
7.2.4.2 Przykłady kompletnych i poprawnych specyfikacji
7.2."i Przykłady specyfikacji warunku
7.2.5.1 Specyfikacje wadliwe
7.2.5.2 Specyfikacje poprawne
7.2.6 Przykłady specyfikacji modułów (podprogramów)
7.2.6.1 Przykład specyfikacji procedury
7.2.6.2 Przykład specyfikacji funkcji
7.2.7 Wyrażanie specyfikacji w postaci komentarzy w tekście opisu algorytmu
7.2.7.1 Treść komentarzy specyfikujących
7.2.7.2 Forma komentarzy specyfikujących instrukcje
7.2.7.3 Postać komentarzy spccyfikująryrli warunki
7.2.7A Postać komentarzy nagłówkowych procedur i funkcji
Ćwiczenia
8 Organizacja algorytmów iteracyjnych 2
8.1 Zmienne wspomagające organizację pętli
8.1.1 Szczególne zmienne o wartościach całkowitych
8.1.1.1 Liczniki
8.1.1.2 Przerzutniki dwustanowe
8.1.1.3 Przerzutniki modularne
8.1.2 Sterujące zmienne logiczne
8.2 Rodzaje kompozycji iteracyjnych z pętlą typu "dopóki"
8.2.1 Klasyfikacja ze względu na refren
8.2.2 Klasyfikacja ze względu na warunek
8.2.3 Klasyfikacja ze względu na liczbę wykonań refrenu
8.3 Sterowanie liczbą wykonań i wyjściem z pętli
8.3.1 Pętle z licznikami wykonań
8.3.2 Pętle sterowane przez użytkownika
8.3.3 Pętle logiczne
8.3.4 Konstrukcje "mieszane"
8.4 Sterowanie przebiegiem wykonania refrenu
8.4.1 Wykorzystanie przerzutników dwustanowych
8.4.1.1 Przerzutnik arytmetyczny
8.4.1.2 Przerzutnik logiczny
8.4.2 Wykorzystanie przerzutników modularnych
8.4.2.1 Przerzutnik dwustanowy niesymetryczny
8.4.2.2 Przerzutnik W iel os tan owy cykliczny
Ćwiczenia
9 Algorytmy sekwencyjnego przetwarzania ciągów
9.1 Rodzaje zadań przetwarzania ciągów
9.2 Skanowanie ciągu
9.3 Przetwarzanie równoczesne kilku kolejnych wyrazów ciągu
9.4 Odszukiwanie i wyszukiwanie w ciągu
9.4.1 Rodzaje zadań przeszukiwania ciągu
9.4.2 Pojęcie klucza
9.4.3 Algorytm sekwencyjnego odszukiwania wyrazu o zadanej wartości klucza
9.4.4 Odszukiwanie według klucza logicznego
9.4.5 Weryfikacja hipotezy o wyrazach ciągu
9.4.6 Algorytm sekwencyjnego wyszukiwania w ciągu wyrazów o zadanej wartości klucza
9.5 Przetwarzanie ciągów posortowanych
9.5.1 Pojęcie posortowania
9.5.2 Odszukiwanie sekwencyjne w ciągu posortowanym według klucza szukania
9.5.3 Wyszukiwanie sekwencyjne w ciągu posortowanym według klucza szukania Ćwiczenia
10 Iteracja a wzory rekurencyjne
10.1 Definicje rekursywne i rekurencyjne
10.1.1 Pojęcie rekursji
10.1.2 Ciągi definiowane rekurencyjnie
10.1.2.1 Jednokrokowe definicje rekurencyjne ciągów
10.1.2.2 Przykłady formalnych jednokrokowych definicji rekurencyjnych ciągów
10.1.2.3 Wielokrokowc definicje rekurencyjne ciągów
10.1.2.4 Praktyczne znaczenie definicji rekurencyjnych
10.1.2.5 Konstruowanie wzorów rekurencyjnych
10.2 Iteracyjne algorytmy obliczeń według definicji rekurencyjnych
10.2.1 Ogólny schemat, algorytmu obliczeń rekurencyjnych
10.2.2 Przykłady
10.2.2.1 Silnia
10.2.2.2 Potęga całkowita liczby rzeczywistej
10.2.2.3 Algorytm pierwiastkowania (wzór Herona-Newtona-Raphsona)
10.2.2.4 Cecha logarytmu przy podstawie p
10.2.2.5 Suma kolejnych wyrazów nierekurcncyjnego ciągu liczbowego
10.2.2.6 Suma ciągu naprzemiennego
10.2.2.7 Algorytm Gilla-Mollera
10.2.2.8 Maksymalny wyraz i jego indeks w ciągu zdefiniowanym nierekurencyjnie
10.2.3 Algorytmy obliczeń według wzorów wielokrokowych
10.2.3.1 Ciąg Fibonacciego
10.2.3.2 Ogólna reguła algoiytmizacji rekurencji wielokrokowej
10.2.4 Programowanie superpozycji wzorów rekurencyjnych
10.2.4.1 Superpozycje definicji rekurencyjnych
10.2.4.2 "Powściągliwe" algorytmy dla superponowanych wzorów rekurencyj-nych
Ćwiczenia
11 Poprawność i odporność algorytmów
11.1 Poprawność lokalna i odporność instrukcji
11.1.1 Asercja o instrukcji. Prekondycja i post kondycja
11.1.2 Poprawność lokalna i globalna instrukcji
11.1.2.1 Własność algorytmiczna instrukcji. Poprawność lokalna
11.1.2.2 Poprawność globalna instrukcji
11.1.2.3 Poprawność lokalna a specyfikacja zadania napisania instrukcji
11.1.2.4 Odporność instrukcji
11.1.2.5 Najsłabsza wystarczająca prekondycja
11.1.3 Poprawność instrukcji prostych
11.1.3. i Poprawność instrukcji pustej. Własność algorytmiczna predykatu
11.1.3.2 Poprawność instrukcji przypisania
11.1.3.3 Poprawność instrukcji proceduralnej
11.2 Poprawność instrukcji strukturalnych
11.2.1 Wystarczające własności algorytmiczne komponentów instrukcji
11.2.2 Poprawność sekwencji instrukcji
11.2.3 Poprawność kompozycji warunkowych
11.2.3.1 Poprawność selekcji dwuwariantowej
11.2.3.2 Poprawność selekcji z wariantem pustym
11.2.3.3 Poprawność selekcji w ie I owa ri autowej
11.2.4 Poprawność algorytmów iteracyjnych
I 1.2.5 Indukcja matematyczna
11.2.6 Niezmienniki instrukcji
11.2.7 Niezmiennik pętli
11.2.8 Poprawność pętli "dopóki"
LI.2.9 Poprawność pętli "aż do"
11.3 Dowodzenie poprawności algorytmów
11.3.1 Testowanie algorytmu a dowód jego poprawności
11.3.1.1 Pojęcie testowania algorytmu
11.3.1.2 Testowanie jako kryterium poprawności
11.3.1.3 Ogólne zasady dowodzenia poprawności algorytmów złożonych
11.3.2 Przykłady dowodów poprawności
II.-5.2.1 Przykład dowodu poprawności sekwencji
11.3.2.2 Dowodzenie poprawności selekcji zagnieżdżonej w sekwencji
11.3.2.3 *Przyklad dowodu poprawności algorytmu z pętlą o refrenie strukturalnym
11.3.2.4 Poprawność algorytmu obliczania wyrazów ciągu zdefiniowanego re-kurencyjnie
Ćwiczenia
12 Strukturalne techniki bezpiecznej algorytmizacji
12.1 Idea algorytmizacji bezpiecznej
12.1.1 Idea programowania strukturalnego
12.2 Zapewnianie poprawności algorytmu w projektowaniu zstępującym
12.2.1 Postępowanie top-down w procesie konstruowania algorytmu
12.2.1.1 Cykl dekompozycyjny
12.2.1.2 Wybór właściwej konstrukcji algorytmicznej
12.2.1.3 Budowanie szkieletu wybranej kompozycji
12.2.1.4 Specyfikowanic komponentów konstrukcji
12.2.1.5 Weryfikacja dokonanej dekompozycji
12.2.1.6 Wybór kolejnego zadania do algorytmizacji
12.3 Czytelność algorytmu jako element algorytmizacji bezpiecznej
12.3.1 Czytelność opisu algorytmu
12.3.1.1 Czytelność intencji autora algorytmu
12.3.1.2 Czytelność struktury tekstu opisu algorytmu
12.4 Technika odraczanego uszczegółowiania
12.4.1 Odroczenie uszczegółowiania instrukcji
12.4.2 Odroczenie kodowania skomplikowanego warunku
12.4.3 Odroczenie uszczegółowiania instrukcji, obliczającej pojedynczą wartość
12.5 Bezpieczne projektowanie instrukcji strukturalnych
12.5.1 Bezpieczne projektowanie selekcji
12.5.1.1 Specyfikowanie komponentów selekcji dwuwariantowej
12.5.1.2 Specyfikowanie komponentów selekcji z wariantem pustym
12.5.2 Bezpieczne projektowanie sekwencji
12.5.3 Bezpieczne projektowanie instrukcji iteracyjnych
12.5.3.1 Specyfikowanie komponentów pętli "dopóki"
12.5.3.2 Niezmiennik jako podstawa algorytmu refrenu pętli
12.5.3.3 Specyfikowanie komponentów pętli "powtarzaj"
Ćwiczenia
13 Procedury i funkcje rekursywne
13.1 Rekurencja a rekursja
13.2 Konstrukcja modułu rekursywnego
13.3 Rekursywne algorytmy dla wzorów rekurencyjnych "jednopunktowych"
13.3.1 Wzorzec procedury rekursywnej dla jednokroknwe-go związku rekureiicyjnego
13.3.2 Wzorzec funkcji rekursywnej dla jednokrokowego związku rekureiicyjnego
13.3.3 Przebieg wykonania instrukcji proceduralnej wywołującej procedurę rekursywną
13.4 Rekursywne algorytmy dla wzorów rekurencyjnych "wielopunktowych"
13.4.1 Algorytmy rozrzutne
13.4.2 Algorytmy powściągliwe z przestawieniem cyklicznym
13.5 Inne przykłady
13.5.1 Algorytm Euklidesa w wersji rekursywnej
13.5.2 Szybkie obliczanie potęgi o wykładniku kardynalnym
13.5.3 Rekursywną lokalizacja miejsca zerowego funkcji metodą bisekcji
13.6 *Rekursja ..ogonowa" (psendorekursja)
Ćwiczenia
II Struktury danych
14 Struktury danych i ich reprezentacje
14.1 Pojęcie struktury danych
14.2 Rodzaje struktur danych
14.3 Przetwarzanie danych strukturalnych i struktur danych
14.3.1 Rodzaje procesów przetwarzania struktur danych
14.3.2 Złożoność czasowa algorytmów przetwarzania struktur danych
14.3.3 Algorytmizacja przetwarzania struktur jednorodnych
14.3.3.1 Klasyfikacja algorytmów przetwarzania struktur jednorodnych
14.3.3.2 Metoda ,,dziel i zwyciężaj"
14.4 Reprezentacje struktur danych
14.4.1 Struktura danych a jej reprezentacja
14.4.2 Dane strukturalne i strukturalne typy wartości
14.4.3 Dane referencyjne reprezentujące struktury danych
14.5 Struktury danych jako nośniki reprezentacji obiektów i systemów rzeczywistych
15 Niejednorodne struktury danych
15.1 Modele opisu elementów świata rzeczywistego
15.1.1 Rodzaje prostej informacji opisującej
15.1.2 Wieloatrybutowe modele deskrypcyjne
15.2 Rekordy logiczne i zmienne rekordowe
15.2.1 Budowa rekordu
15.2.2 Operowanie zmiennymi rekordowymi
15.3 Przykłady zastosowania typów rekordowych
15.3.1 Arytmetyka liczb wymiernych
15.3.1.1 Językowa reprezentacja liczby wymiernej
15.3.1.2 Implementacja działań na liczbach wymiernych
15.3.2 Arytmetyka liczb zespolonych
15.3.2.1 Specyfika algorytmizacji rachunku zespolonego
15.3.2.2 Rekordowe reprezentacje wartości zespolonych
15.3.2.3 Implementacja arytmetyki zespolonej
Ćwiczenia
16 Jednorodne struktury danych z indeksowaniem
16.1 Tablice i typy tablicowe
16.1.1 Pojęcie struktury tablicowej, indeksu i tablicy
16.1.2 Definiowanie struktury tablicy i typu tablicowego
16.1.2.1 Definiowanie konfiguracji struktury tablicowej
16.1.2.2 Formalna definicja typu tablicowego
16.1.3 Operowanie zmiennymi tablicowymi
16.2 Podstawowe algorytmy tablicowe
16.2.1 Założenia wstępne
16.2.2 Ogólna idea iteracyjnych algorytmów przetwarzania tablic jednowymiarowych
16.2.3 Skanowanie sekwencyjne
16.2.4 Zadania odszukiwania i wyszukiwania w tablicach nieposortowanych 16.2.3 Tablica posortowana
16.2.5.1 Odszukiwanie sekwencyjne w tablicy posortowanej
16.2.5.2 Odszukiwanie bisekcyjne
16.2.5.3 Wyszukiwanie w tablicy posortowanej
16.2.5.4 Sortowanie "bąbelkowe" odcinka tablicy
16.2.6 Rekursywne algorytmy tablicowe
16.2.6.1 Rekursywny wariant metody bisekcji
16.2.6.2 Algorytmy konstruowane metodą "dziel i zwyciężaj"
16.3 Proste zastosowania tablic
16.3.1 Tablicowa implementacja algebry zespolonej
16.3.2 Wielomiany i równania algebraiczne
16.3.3 Wektory i macierze
16.4 "Pliki jednorodne
16.4.1 Kojarzenie pliku fizycznego ze zmienną reprezentującą plik jednorodny
16.4.2 Tryby przetwarzania pliku jednorodnego
16.4.3 Przetwarzanie sekwencyjne pliku jednorodnego
16.4.3.1 Dopisywanie sekwencyjne składowych do pliku jednorodnego
16.4.3.2 Odczytywanie sekwencyjne składowych pliku jednorodnego
16.4.3.3 Nadpisywanie sekwencyjne pliku jednorodnego
16.4.4 Przetwarzanie pliku jednorodnego w trybie dostępu bezpośredniego
16.4.4.1 Odszukiwanie bisekcyjne
16.4.4.2 Pobieranie i nadpisywanie składowej o zadanym indeksie
16.4.4.3 Sortowanie plików jednorodnych
Ćwiczenia
17 Rekordowo-tablicowe implementacje struktur matematycznych
17.1 Reprezentacje ciągów i zbiorów skończonych
17.1.1 Ciągi skończone ograniczonej długości
17.1.2 Wektory i punkty przestrzeni kartezjańskich
17.1.3 Reprezentacja skończonego podzbioru dowolnego typu wartości
17.1.3.1 Tabelki funkcji charakterystycznej podzbioru
17.1.3.2 Wykaz elementów podzbioru
17.1.3.3 Implementacja rachunku zbiorów
17.1.3.4 Małe bazy danych
17.1.3.5 Podzbiór zbioru indeksów tablicy przeszukiwanej
17.2 Implementacje rachunku wektorowego i macierzowego
17.2.1 Działania na wektorach
17.2.2 Reprezentacje macierzy
17.2.2.1 Reprezentacja z tablicą dwuwymiarową
17.2.2.2 Reprezentacje z tablicą jednowymiarową
17.2.3 Podstawowe działania na macierzach i wektorach
17.3 Implementacja algebry wielomianów
17.3.1 Znaczenie praktyczne implementacji algebry wielomianów
17.3.2 Reprezentacje wielomianów jednej zmiennej
17.3.2.1 Formalne reprezentacje wielomianu jednej zmiennej
17.3.2.2 Językowa reprezentacja wielomianu jednej zmiennej o współczynnikach rzeczywistych
17.3.3 Algorytmy operacji na wielomianach
17.3.3.1 Schemat Homera - obliczanie wartości wielomianu, dzielenie wielomianu przez dwumian
17.3.3.2 Różniczkowanie formalne wielomianu
17.3.3.3 Algorytm standaryzacji (redukcji stopnia) wielomianu
17.3.3.4 Suma algebraiczna dwóch wielomianów
17.4 Tabele funkcyjne
17.4.1 Sposoby reprezentowania funkcji w algorytmach
17.4.2 Pojęcie tabeli funkcyjnej i jej struktura
17.4.3 Algorytmy przetwarzania tabel funkcyjnych
Ćwiczenia
18 Struktury jednorodne wiązane referencjami
18.1 Listy liniowe wiązane wskazaniami
18.1.1 Listy liniowe jednokierunkowe
18.1.1.1 ,.Pączkowanie" danych wskazywanych
18.1.1.2 Pojęcie listy liniowej
18.1.1.3 Lista liniowa jednokierunkowa z dostępem czołowym
18.1.1.4 Lista liniowa jednokierunkowa z dostępem do obu końców
18.1.1.5 Skanowanie listy liniowej jednokierunkowej
18.1.1.6 Listy liniowe dwukierunkowe
18.1.1.7 Posortowanie list liniowych wiązanych wskazaniami
18.2 Listy cykliczne i struktury drzewiaste
18.2.1 Lista cykliczna
18.2.2 Drzewa n-arne
18.2.2.1 Pojęcie drzewa zakorzenionego
18.2.2.2 Drzewo n-arne (zakorzenione)
18.2.2.3 Binarne drzewa wyszukiwania
18.3 Listy liniowe wiązane indeksami
18.4 Operacje strukturalne na listach wiązanych referencjami
18.4.1 Skanowanie sekwencyjne
18.4.2 Sortowanie list liniowych
18.4.2.1 Sortowanie statyczne
18.4.2.2 Sortowanie wirtualne
Ćwiczenia
19 Dynamika liniowych struktur danych
19.1 Sortowanie dynamiczne list liniowych
19.1.1 Fizyczne sortowanie dynamiczne
19.1.1.1 Przestawianie miejscami pary składowych listy
19.1.1.2 Algorytmy dynamicznego fizycznego sortowania bąbelkowego
19.2 Dołączanie i usuwanie składowych w liście liniowej
19.2.1 Reprezentacje językowe dla dynamicznych list liniowych
19.2.1.1 Rozmieszczenie konsekutywne lewostronnie zaczepione
19.2.1.2 Rozmieszczenie konsekutywne prawostronnie zaczepione
19.2.1.3 Rozmieszczenie konsekutywne o końcach swobodnych
19.2.1.4 Rozmieszczenie konsekutywno-cykliczne
19.2.1.5 Algorytmy pomocnicze dla przetwarzania reprezentacji rekordowo-tablicowych zwartych
19.2.2 Wytwarzanie struktury pustej. Stany "zerowe" i .,brzegowe" oraz ich rozpoznawanie
19.2.2.1 Generowanie nowej, pustej listy liniowej
19.2.2.2 Wykrywanie pustości listy liniowej
19.2.2.3 Wykrywanie jednoelementowości listy liniowej
19.2.2.4 Wykrywanie maksymalności listy liniowej
19.2.3 Insercja nowej składowej
19.2.3.1 Insercja fizyczna i wirtualna
19.2.3.2 Ogólny schemat "wzorcowy" operacji insercji
19.2.3.3 Insercje na końcach listy liniowej
19.2.3.4 Insercje do wnętrza listy liniowej
19.2.4 Delecja składowej
19.2.4.1 Delecja fizyczna i wirtualna
19.2.4.2 Wykonalność delecji
19.2.4.3 Ogólny schemat "wzorcowy" operacji delecji z listy liniowej
19.2.4.4 Delecje na końcach listy liniowej
19.2.5 Delecje z wnętrza listy liniowej
19.2.6 Struktury ze szczególnym reżimem insercji, delecji i dostępu
[0.2.6J Kolejki
19.2.6.2 Stosy
19.2.6.3 Deki
19.2.6.4 Zastosowania stosów i kolejek
19.3 Operacje na kilku strukturach liniowych
19.3.1 Łączenie kolejek zgodnie posortowanych
19.3.1.1 Ogólny schemat algorytmów łączenia
19.3.1.2 Przypadek ostrego posortowania kolejek wejściowych o składowych tego samego typu
19.3.1.3 Zastosowanie schematu łączenia do rachunku zbiorów
19.3.1.4 Przykład słabego posortowania jednej z kolejek wejściowych
19.3.2 Sortowanie list liniowych przez rozszczepianie i łączenie
19.3.2.1 Segmenty posortowane kolejki nieposortowanej
19.3.2.2 Algorytm rozszczepiania i Sączenia
Ćwiczenia
Bibliografia Skorowidz
ISBN:
978-83-7784-102-0
Download