ALG0
110 Rozdział 5. Struktury danych
Rysunek 5-9 zawiera już kilka nowości w porównaniu z tym, co mieliśmy okazję do tej pory poznać.
Tablica TABPTR zawiera rekordy informacyjne (tzn. wskaźniki głowa i ogon) do list złożonych z adresów rekordów z listy DANE - w naszym przypadku zakładamy 3 listy wskaźników i będą one oczywiście zawierać adresy adrl, adrl i adr3 (chwilowo na liście znajdują się trzy elementy; w miarę dokładania nowych elementów do listy DANE będą ulegały odpowiedniemu wzrostowi listy wskaźników).
Rys. 5 - 9. Sortowanie listy bez przemieszczania jej elementów (2).
lista TAB PTR
Rozmiar tablicy TAB PTR jest równy liczbie kryteriów' sortowania: patrząc od góry możemy zauważyć, że listy są posortowane kolejno wg nazwiska, kodu i zarobków.
Podsumujmy informacje, które można odczytać z rysunków' 5 - 8 i 5 - 9:
• nieposortowana baza danych, która jest zapamiętana w liście o nazwie DANE, zawiera w danym momencie 3 rekordy;
• tablica wskaźników TABPTR zawiera 3 rekordy informacyjne (poznane już poprzednio), których pola głowa i ogon umożliwiają dostęp do trzech list wskaźników-. Każda z tych list jest posortowana wg innego kryterium sortowania.
Przykładowo lista wskazywana przez TAB_PTR[0] jest posortowana alfabetycznie wg nazwisk pracowników (Fuks, Kowalski i Zaremba), analogicznie TAB_PTR[I| klasyfikuje pracowników wg pewnego kodu używanego w tej fabryce (Zaremba, Fuks i Kowalski), podobnie TAB_PTR[2] grupuje pracowników wg ich zarobków.
Poniżej jest przedstawiona nowa wersja klasy LISTA, uwzględniająca już propozycje przedstawione na rysunku 5-8. Aby umożliwić sensowną prezentację w postaci programu przykładowego, pewnemu uproszczeniu uległa struktura danych zawierająca informacje o pracowniku: ograniczymy się tylko do nazwuska
Wyszukiwarka
Podobne podstrony:
ALG0 120 Rozdział 5. Struktury danych i if (pos!=q) rsturn(O); II element nieAlg0 120 Rozdział 5. Struktury danych i if (pos!=q) rsturn(O); II element nieALG0 130 Rozdział 5. Struktury danych Symboliczny stos znajdujący się pod każdą z sześciu grup instALG0 140 Rozdział 5. Struktury danych porządek. Czy czasem owa procedura nie jest na tyle kosztownaALG 4 94 Rozdział 5. Struktury danych5.1. Listy jednokierunkowe Lista jednokierunkowa jest oszczędnąALG 6 96 Rozdział 5. Struktury danych Rys. 5 - 3. FCOOh FCI4h FFEEh Przykład listy jedno-kierunkALG 8 98 Rozdział 5. Struktury danych W następnych paragrafach zostaną przedstawione wszystkie metodALG0 100 Rozdział 5. Struktury danyi z tych przypadków w istniejącej liście trzeba znaleźć miejsceALG2 102___Rozdział 5. Struktury danych I ELEMENT *q=inf.głowa; if (pusta()) cout << "(lALG4 104 Rozdział 5, Struktury danych dla danego obiektu wykonanie na sobie operacji „dekrementacjiALG8 108__Rozdział 5. Struktury danych5.1.3.Listy jednokierunkowe - teoria i rzeczywistość Oprócz pALG2 112 Rozdział 5. Struktury danych 112 Rozdział 5. Struktury danych //rekord informacyjny listyALG4 114 Rozdział 5. Struktury danych stan—ZAKOŃCZ; else { przcd=po; po=po->nastepny; I RóżnicaALG6 116 Rozdział 5. Struktury danych Iisla2.li int alfabetycznie(ELEMENT *q],ELEMENT *q2) { II czyALG8 118 Rozdział 5. Struktury danych if(pŁzed==NULL) // wstawiamy na początek listy ( inf_ptr[nr].ALG2 122 Rozdział 5. Struktury danych Czerniak zarabia 3000zl Wynik usunięcia rekordu pracownika zaALG4 124 Rozdział 5. Struktury danych Co jednak z dołączaniem elementów do listy? Poniżej są omówioALG6 126 Rozdział 5. Struktury danych Rys. 5 - 12. Metoda„ tablic równoległych " (2) DANE L2ALG8 138 Rozdział 5. Struktury danych • „prawy” potomek /-tego węzła jest „schowany” pod indeksem 2więcej podobnych podstron