Niniejszy podręcznik przeznaczony jest jako pomoc dydaktyczna do przedmiotu ?Struktury danych", prowadzonego przez autora od szeregu lat na kierunku Informatyka Wydziału Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej.
Zagadnienia struktur danych mają charakter podstawowy dla wykształcenia współczesnego inżyniera informatyka. Obejmują one ważne zagadnienia z praktyki programowania, rozpatrywane w oderwaniu od konkretnego języka programowania. Bez przesady można powiedzieć, że tematyka tego podręcznika obejmuje to, co każdy informatyk wiedzieć powinien na temat podstawowych struktur danych stosowanych w pamięci operacyjnej komputera i algorytmów na nich operujących. W tym podręczniku nie są omawiane grafy, stanowiące treść przedmiotu ?Teoria grafów i sieci", ani struktury plikowe, wchodzące w zakres przedmiotu ?Struktury baz danych".
Istotnym elementem podręcznika ?Struktury danych" jest uwypuklenie aspektów implementacyjnych i zastosowaniowych w odniesieniu do omawianych struktur danych i algorytmów, co jest szczególnie istotne dla informatyka praktyka. Poszczególne struktury danych omawiane są pod kątem ich praktycznego zastosowania do przechowywania informacji i wydajnego operowania nimi. Podejście to jest efektem wieloletniego doświadczenia autora w praktycznym stosowaniu różnorakich struktur danych w systemach informatycznych. Nie znaczy to jednak, że w podręczniku pominięto istotne zagadnienia teoretyczne. Czytelnik znajdzie tu ważniejsze wyniki analizy matematycznej opisywanych algorytmów, wyprowadzenia niektórych wzorów i inne aspekty teoretyczne. Zapewnia to właściwe osadzenie praktyki w ramach teorii, a zarazem wytycza kierunki samodzielnego pogłębiania wiedzy informatycznej przez tych spośród Czytelników, którzy poczują niedosyt i zechcą dalej zgłębiać fascynujący świat struktur danych.
Układ podręcznika jest następujący: W rozdziale pierwszym zdefmiowano pojęcia podstawowe, takie jak prosty i złożony typ danych, oraz wprowadzono pojęcia złożoności obliczeniowej i pamięciowej jako miar jakości algorytmów. W rozdziale drugim omówiono szczegółowo struktury tablicowe: tablice nieuporządkowane i uporządkowane, tablice rozproszone oraz problem sortowania tablic. W rozdziale trzecim wprowadzono pojęcie rekursywnego typu danych i zaprezentowano struktury listowe jako przykłady typów rekursywnych. W rozdziale czwartym omówiono struktury drzewiaste, ze szczególnym naciskiem na binarne drzewa wyszukiwawcze. Każdy z rozdziałów podręcznika kończy się pytaniami i ćwiczeniami przeznaczonymi do samodzielnego rozwiązania. Na końcu podręcznika zamieszczono spis podstawowej literatury z zakresu struktur danych, przede wszystkim polskojęzycznej.
Autor wyraża podziękowanie prof. Markowi Kubalemu z Politechniki Gdańskiej za cenne uwagi, które pozwoliły uniknąć szeregu błędów i nieścisłości, jakie znalazły się w pierwszej wersji tekstu. Wszelkie uwagi od Czytelników dotyczące treści, jak i formy tego podręcznika, są mile widziane i oczekiwane pod adresem elektronicznym
Spis treści:Wstęp
1. Wprowadzenie do struktur danych
1.1. Co to są struktury danych?
1.2. Typy danych
1.3. Miary jakości algorytmów
1.4. Szacowanie
1.5. Konwencje i oznaczenia stosowane w opisach algorytmów
1.6. Pytania i zadania
2. Tablice
2.1. Tablice nieuporządkowane
2.2. Tablice uporządkowane
2.2.1. Szukanie binarne
2.2.2. Szukanie interpolacyjne
2.2.3. Inne operacje
2.3. Tablice rozproszone
2.3.1. Sformułowanie problemu
2.3.2. Funkcje mieszające
2.3.3. Rozwiązywanie kolizji metodami łańcuchowania
2.3.4. Rozwiązywanie kolizji metodą adresowania otwartego
2.3.5. Porównanie metod rozwiązywania kolizji
2.4. Sortowanie tablic
2.4.1. Sformułowanie problemu i klasyfikacja metod sortowania
2.4.2. Proste wstawianie
2.4.3. Prosty wybór
2.4.4. Prosta zamiana
2.4.5. Porównanie prostych metod sortowania
2.4.6. Zaawansowane wstawiane (ShellSort)
2.4.7. Zaawansowany wybór (HeapSort)
2.4.8. Zaawansowana zamiana (QuickSort)
2.4.9. Sortowanie grzebieniowe (CombSort)
2.4.10. Porównanie zaawansowanych metod sortowania
2.4.11. Sortowanie cyfrowe
2.5. Pytania i zadania
3. Listy
3.1. Rekursywne typy danych i algorytmy
3.2. Lista jako rekursywna struktura danych
3.2.1. Kolejka FIFO
3.2.2. Kolejka LIFO
3.3. Pytania i zadania
4. Drzewa
4.1. Podstawowe definicje
4.2. Drzewa binarne
4.2.1. Definicja i własności
4.2.2. Drzewo binarne jako reprezentacja dowolnego lasu
4.2.3. Drzewa doskonale zrównoważone
4.2.4. Podstawowe operacje na drzewach binarnych
4.3. Binarne drzewa wyszukiwawcze
4.3.1. Definicja
4.3.2. Operacje na binarnych drzewach wyszukiwawczych
4.3.3. Analiza wyszukiwania w losowym drzewie BDW
4.4. Drzewa zrównoważone względem wysokości
4.4.1. Definicja i podstawowe własności
4.4.2. Drzewa Fibonacciego
4.4.3. Operacje na drzewach A VL
4.4.4. Drzewa AVL - podsumowanie
4.5. Cyfrowe drzewa wyszukiwawcze
4.6. Pytania i zadania
Literatura
Spis algorytmów
Skorowidz