ALG0

ALG0



120 Rozdział 5. Struktury danych

i

if (pos!=q)

rsturn(O);    II element nie odnaleziony?!

if (pos==info dane.głowa) // usuwamy z ooczatku listy I

info_dane.glowa=pos->nastepny; delete pos; tełse

if (pos->nastepny==Nl!LL; // usuwamy z końca listy (

info_dane.ogon=przea; przed->nastepny-NULL; delete pos;

)else    II usuwamy gdzieś "ze środka"

<

przed->nastepny=pos->nastepny; delete pos;

)

return(1);

}

Pomimo wszelkich prób uczynienia powyższych funkcji bezpiecznymi, kontrola w' nich zastosowana jest ciągle bardzo uproszczona. Czytelnik, który będzie zajmował się implementacją dużego programu w C—t% powinien bardzo dokładnie kontrolować poprawność operacji na wskaźnikach. Programy stają się wówczas co prawda mniej czytelne, ale jest to cena za mały, lecz jakże istotny szczegół: ich poprawne działanie...

Poniżej znajduje się rozbudowany przykład użycia nowej wersji listy jednokierunkowej. Jest to dość spory fragment kodu. ale zdecydowałem się na jego zamieszczenie (biorąc pod uwagę względne skomplikowanie omówionego materiału ktoś nieprzyzwyczajony do sprawnego operowania wskaźnikami miał prawo się nieco zgubić; szczegółowy przykład zastosowania może mieć zatem duże znaczenie dla ogólnego zrozumienia całości).

Dwie proste funkcje wypisz 1 i wypisz zajmują się eleganckim wypisaniem na ekranie zawartości bazy danych w kolejności narzuconej przez odpowiednią listę wskaźników;

void LISTA::wypiszl(LPTR_INFO *inf)

I

II    wypisujemy zawartość posortowanej listy

// wskaźników (oczywiścio nic interesuje nas II wypisanie wskaźników (są to adresy), lecz II informacji na które one wskazują LPTR ‘,q=inf->glowa; while (q != NULL) ł

cout << setw(9)<<q->adres->nazwisko<< " zarabia "

« setw (4 ) <<q->adres->zarobek«"z \n"; c=q->nastepny;


Wyszukiwarka

Podobne podstrony:
Alg0 120 Rozdział 5. Struktury danych i if (pos!=q) rsturn(O);    II element nie
ALG0 140 Rozdział 5. Struktury danych porządek. Czy czasem owa procedura nie jest na tyle kosztowna
ALG0 110 Rozdział 5. Struktury danych Rysunek 5-9 zawiera już kilka nowości w porównaniu z tym, co
ALG8 118 Rozdział 5. Struktury danych if(pŁzed==NULL) // wstawiamy na początek listy ( inf_ptr[nr].
ALG0 130 Rozdział 5. Struktury danych Symboliczny stos znajdujący się pod każdą z sześciu grup inst
ALG6 116 Rozdział 5. Struktury danych Iisla2.li int alfabetycznie(ELEMENT *q],ELEMENT *q2) { II czy
ALG2 102___Rozdział 5. Struktury danych I ELEMENT *q=inf.głowa; if (pusta()) cout << "(l
ALG 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-kierunk
ALG 8 98 Rozdział 5. Struktury danych W następnych paragrafach zostaną przedstawione wszystkie metod
ALG0 100 Rozdział 5. Struktury danyi z tych przypadków w istniejącej liście trzeba znaleźć miejsce
ALG4 104 Rozdział 5, Struktury danych dla danego obiektu wykonanie na sobie operacji „dekrementacji
ALG8 108__Rozdział 5. Struktury danych5.1.3.Listy jednokierunkowe - teoria i rzeczywistość Oprócz p
ALG2 112 Rozdział 5. Struktury danych 112 Rozdział 5. Struktury danych //rekord informacyjny listy
ALG4 114 Rozdział 5. Struktury danych stan—ZAKOŃCZ; else { przcd=po; po=po->nastepny; I Różnica
ALG2 122 Rozdział 5. Struktury danych Czerniak zarabia 3000zl Wynik usunięcia rekordu pracownika za
ALG4 124 Rozdział 5. Struktury danych Co jednak z dołączaniem elementów do listy? Poniżej są omówio
ALG6 126 Rozdział 5. Struktury danych Rys. 5 - 12. Metoda„ tablic równoległych " (2) DANE L2
ALG8 138 Rozdział 5. Struktury danych • „prawy” potomek /-tego węzła jest „schowany” pod indeksem 2

więcej podobnych podstron