ALG8
118 Rozdział 5. Struktury danych
if(pŁzed==NULL) // wstawiamy na początek listy (
inf_ptr[nr].glowa=wsk; wsk->nastepny=po; i else
if(po—NULL) // wstawiamy na koniec listy
(
int_ptr[nr].oqon->nastepny=wsk; ws k->nastepny-N'JLL; inf_ptr[nr].ogon=wsk;
I
else // wstawiamy gdzieś "w środku"
(
przed->nastepny-wsk;
wsk->nastepny=po;
I
1
W celu zrozumienia dokonanych modyfikacji właściwe byłoby porównanie obu wersji funkcji dorzuci, aby wykryć różnice, które między nimi istnieją. „Filozoficznie” nie ma ich wiele - w miejsce sortowania danych sortujemy po prostu wskaźniki do nich.
Funkcja zajmująca się usuwaniem rekordów wymaga przesłania m.in. fizycznego adresu elementu do usunięcia. Mając tę informację należy „wyczyścić” zarówno listę danych, jak i listy wskaźników:
int LISTA::usuń(ELEMENT ‘q,
int(*decyzja)(ELEMENT *ql,
ELEMENT *q2))
{
II usuwa całkowicie intormacje z obu list:
//wskaźników i danych ELEMENT ‘ptr_dane; for(int i=0; ■<n?; i++)
ptr_dane=uaun_wsk(sinf_ptr[i], q, decyzja); if !ptr_dane==NULL) return(0); else
return usun_dane(ptr_dane);
)
Funkcja usim mk zajmuje się usuwaniem wskaźników danego elementu z list wskaźników - jakakolwiek byłaby ich liczba. Czytelnik może zauważyć z łatwością, żc raz jeszcze marny tu do czynienia z bardzo podobnym do poprzednich schematem algorytmu.
Można nawet odważyć się na stwierdzenie, że listing jest zamieszczany wyłącznie gwoli formalności! Elementarna kontrola błędów jest zapewniana przez
Wyszukiwarka
Podobne podstrony:
ALG 8 98 Rozdział 5. Struktury danych W następnych paragrafach zostaną przedstawione wszystkie metodALG8 108__Rozdział 5. Struktury danych5.1.3.Listy jednokierunkowe - teoria i rzeczywistość Oprócz pALG0 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 nieALG8 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" elementyALG4 104 Rozdział 5, Struktury danych dla danego obiektu wykonanie na sobie operacji „dekrementacjiALG2 102___Rozdział 5. Struktury danych I ELEMENT *q=inf.głowa; if (pusta()) cout << "(lALG8 158 Rozdział 5. Struktury{ if (p->t[rio_indeksu{słowo[i])]==NULL) test=0; // bidk odgałęzieALG 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-kierunkALG0 110 Rozdział 5. Struktury danych Rysunek 5-9 zawiera już kilka nowości w porównaniu z tym, coALG2 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 czyALG2 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 128 Rozdział 5. Struktury dam i W zależności od konkretnych potrzeb można element /> fizyczwięcej podobnych podstron