ALG 9
5.1. Listy jednokierunkowe 99
stawałby się on wówczas automatycznie głową listy i musiałby zostać zapa miętany przez program, aby nie stracić dostępu do danych:
ELEMENT 1q=new ELEMENT; // a)
q->wartosc=x; // b)
q->nastepny=ptr; // c)
W tym I dalszych przykładach przyjmowane jest założenie, że przydział pamięci ZAWSZE kończy się sukcesem. W rzeczywistych programach jest to przypuszczenie dość niebezpieczne i warto sprawdzać, czy istotnie po użyciu instrukcji ELEMENT 1q=new ELEMENT wartości q nie zostało przypisane NULL! Z uwagi na chęć zapewnienia klarowności prezentowanych algorytmów, tego typu kontrola zostanie w książce pominięta, podczas realizacji „prawdziwego” programu takie niedopatrzenie może się okazać dość przykre w skutkach._ _
Kod ten może być zilustrowany schematem z rysunku 5-4.
Rys. 5-4. |
a) Usta pierwotna |
ptr |
Dołączanie elementu na jej po |
b) nowa komórka |
q |
czątek. |
c) zmodyfikowana Usta |
q |
•GS- NULL
NULL
Sposób podany powyżej jest poprawny, ale pamiętajmy, że dokładając nowe elementy zawsze na początek listy tracimy istotną czasami informację na temat kolejności nadchodzenia elementów!
Rys. 5 - 5.
Dołączanie elementu listy z sortowaniem
Nowy element (narysowany pogrubioną kreską) może zostać wstawiony na początek (a), koniec (b) listy, jak i również gdzieś w jej środku (c). W każdym
1
wiele bardziej złożona jest funkcja dołączająca nowy element w takie miejsce, aby całość list)' była widziana jako posortowana (tutaj: w kierunku wartości niemalejących). Ideę przedstawia rysunek 5-5, gdzie możemy zobaczyć sposób dołączania liczby 1 do już istniejącej listy złożonej z elementów -1, 3 i 12.
Wyszukiwarka
Podobne podstrony:
ALG9 5,1. Listy jednokierunkowe 109 Poruszony powyżej problem był na tyle charakterystyczny dla wieALG9 5.1. Listy jednokierunkowe 119 wartość zwracaną przez funkcję: w normalnej sytuacji winien to000 by rozpaść się na jakiś stan, to zwie się on wówczas kanałem otwartym. Stany skomunikowane o eneALG9 1.1. Jak to wcześniej bywało, czyli... 19 • jest skończony (wynik algorytmu musi zostać „kiedy~LWF0116 mu było organizować kult nowej wiary1. Wycofał się on wówczas do Yastergótlandu. O. Moberg,ALG 5 5.1 Listy jednokierunkowe 95 w tej książce dla uproszczenia operuje się głównie wartościami ty! Listy Redakcja odpowiada Listy 1 1 go sympatię, lo nic broni się on przed kontaktem. Czasem słysz33531 IMG96 (10) ziemi, stawały się obiektami naukowych dociekań. Łączył on w sobie typowe podejściDSC99 (2) walania się spod strumienia zdarzeń wytknie drogą religioznawstwu porównawczemu Eliadego.do szkoły pisywaliśmy do siebie listy przez parę tygodni, potem listy stawały się rzadsze, ustawałyALG 7 5.1. Listy jednokierunkowe 97 public: int pusta() // czy lista jest pusta? {ALG1 5.1 Listy jednokierunkowe 101 5.1 Listy jednokierunkowe 101 ELEMENT Aprzed=NULL,*po=inf.głowa;ALG3 5.1 Listy jednokierunkowe 103 noprawny obiekt - może aktywować dowolną metodę swojej klasy, czALG5 5.1 Listy jednokierunkowe 105 Na rysunku 5-7 możemy przykładowo prześledzić jak powinna być wyALG7 5.1. Listy jednokierunkowe 107 cout « "L2 = for (i=0; i<n; 12.dorzuc2(tab2[i++])) ; 12ALG1 5.1. Listy jednokierunkowe 111 i zarobków. (Rozbudowa tych struktur danych nie wniosłaby konceALG3 5.1 Listy jednokierunkowe 113 int wzor(int x,int(*fun)(int!) [ return fun(x); ) void main(} iALG5 5.1. Listy jednokierunkowe 115 I res->gIowa=przed; res->oqon=pos; return (ras) ; } 1 •więcej podobnych podstron