ALG8
108__Rozdział 5. Struktury danych
5.1.3.Listy jednokierunkowe - teoria i rzeczywistość
Oprócz pięknie brzmiących rozważań teoretycznych istnieje jeszcze twarda rzeczywistość, w której... mają wykonywać się nasze pieczołowicie przygotowane programy1.
Spójrzmy obiektywnie na listy jednokierunkowe pod kątem ich wad i zalet (patrz tabela 5-1).
wady |
zalety |
nienaturalny dostęp do elementów |
małe zużycie pamięci |
niełatwe sortowanie |
elastyczność |
Tabela 5-1.
Wady i zalety list jednokierunkowych,
Przeanalizujmy szczególnie uważnie zagadnienie sortowania danych będących elementami listy. Wyobrażamy sobie zapewne, że posortowanie w pamięci struktury danych, która nie jest w' niej rozłożona liniowo (tak jak ma to miejsce w przypadku tablicy), jest dość złożone.
I ista, do której nowe elementy są wstawiane już na samym początku konsekwentnie w określonym porządku, służy, oprócz swojej podstawowej roli gromadzenia danych, także do ich porządkowania. Jest to piękna właściwość: „sama" struktura danych dba o sortowanie! W sytuacji gdy istnieje tylko jedno kryterium sortowania (np. w kierunku wartości niemalejących pewnego pola a-), to możemy mówić o ideale. Cóż jednak mamy począć, gdy elementami listy są rekordy o bardziej skomplikowanej strukturze, np.:
struct
(
char imierżO];
char nazwisko[30] ;
int wiek;
int kod_pracownika;
)
Raz możemy zechcieć dysponować taką listą uporządkowaną alfabetycznie, wg nazwisk, innym razem będzie nas interesował wiek pracownika... Czy należy w takim przypadku dysponować dwiema wersjami tych list - co „pożera" cenną pamięć komputera - czy też może zdecydujemy się na sortowanie listy' w' pamięci? Jednak uwaga: to drugie rozwiązanie zajmie z kolei cenny czas procesora!
1
Wbrew wszelkim przesłankom nie jest lo definicja systemu operacyjnego...
Wyszukiwarka
Podobne podstrony:
ALG 4 94 Rozdział 5. Struktury danych5.1. Listy jednokierunkowe Lista jednokierunkowa jest oszczędnąALG8 118 Rozdział 5. Struktury danych if(pŁzed==NULL) // wstawiamy na początek listy ( inf_ptr[nr].ALG 8 98 Rozdział 5. Struktury danych W następnych paragrafach zostaną przedstawione wszystkie metodALG8 138 Rozdział 5. Struktury danych • „prawy” potomek /-tego węzła jest „schowany” pod indeksem 2ALG8 148 Rozdział 5. Struktury danych 148 Rozdział 5. Struktury danych „ nadchodzące" elementyALG 6 96 Rozdział 5. Struktury danych Rys. 5 - 3. FCOOh FCI4h FFEEh Przykład listy jedno-kierunkALG2 112 Rozdział 5. Struktury danych 112 Rozdział 5. Struktury danych //rekord informacyjny listyALG4 124 Rozdział 5. Struktury danych Co jednak z dołączaniem elementów do listy? Poniżej są omówioALG2 162 Rozdział 5. Struktury danych c) pewien element listy, który odpowiada kryteriom poszukiwańALG2 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 „dekrementacjiALG0 110 Rozdział 5. Struktury danych Rysunek 5-9 zawiera już kilka nowości w porównaniu z tym, coALG4 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 czyALG0 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 nieALG2 122 Rozdział 5. Struktury danych Czerniak zarabia 3000zl Wynik usunięcia rekordu pracownika zaALG6 126 Rozdział 5. Struktury danych Rys. 5 - 12. Metoda„ tablic równoległych " (2) DANE L2ALG8 128 Rozdział 5. Struktury dam i W zależności od konkretnych potrzeb można element /> fizyczwięcej podobnych podstron