ALG7

ALG7



5.1. Listy jednokierunkowe 117

Mając już komplet funkcji pusta, zestaw funkcji decyzyjnych i uniwersalną funkcję odszukaj wsk. możemy pokusić się o napisanie brakującej procedury dorzuci, która będzie służyła do dołączania nowego rekordu do listy danych z jednoczesnym sortowaniem list wskaźników. Załóżmy, że będą tylko dwa kryteria sortowania danych, co implikuje, iż tablica zawierająca „wskaźniki do list wskaźników” będzie miała tylko dwie pozycje (patrz rysunek 5 - 9).

Adres tej tablicy, jak również wskaźniki do listy danych i do nowo utworzonego elementu zostaną obowiązkowo przekazane jako parametry:

void LISTA::dorzuć(ELEMENT *q)

(

II rekord dołączamy bez sortowania

if(info_dane.qlowa==NULL)    // lista pusta

info_dane.glowa-info dane.ogon«q; else    // coś jest w liście

I

(info_dane.ogon!->nastepny=q; info_dane.ogon=q;

I

II dołączamy wskaźnik do rekordu do listy // posortowanej alfabetycznie: dorzucż(0,q,alfabetycznie);

II dołączamy wskaźnik do rekordu do listy II posortowanej wg zarobków: dorzucż(1,ą,wg_zarobkow);

)

Funkcja jest bardzo prosta, głównie z uwagi na tajemniczą procedurę o nazwie dorzuci. Oczywiście nie jest to jej poprzedniczka zc strony 101, choć różni się od tamtej doprawdy niewiele:

void LISTA::dorzuc2( int nr,

ELEMENT *q,

int(‘decyzja)(ELEMENT *ql,

ELEMENT *q2>

)

{

LPTR *wsk=new LPTR;

wsk->adres=q; II wpisujemy adres rekordu q //Poszukiwanie właściwej pozycji na wstawienie elementu: if (inf_ptr[nr].glcwa==NULL) // lista pusta (

inf_ptrInrl,glowa=inf_ptr[nr],oqon=wsk;

W3k >nastepny=NULL;

•else //szukamy miejsca na wstawienie I

LPTR "przed,*po;

LPTR_INFO ‘gdzie;

gdzie=odszukaj_wsk(&inf_ptr[nr],q,decyzja)j

przed=gdzie->glowa;

po“gdzie->ogon;


Wyszukiwarka

Podobne podstrony:
ALG 7 5.1. Listy jednokierunkowe 97 public: int pusta()    // czy lista jest pusta? {
ALG7 5.1. Listy jednokierunkowe 107 cout « "L2 = for (i=0; i<n; 12.dorzuc2(tab2[i++])) ; 12
ALG9 5.1. Listy jednokierunkowe 119 wartość zwracaną przez funkcję: w normalnej sytuacji winien to
ALG 5 5.1 Listy jednokierunkowe 95 w tej książce dla uproszczenia operuje się głównie wartościami ty
ALG 9 5.1. Listy jednokierunkowe 99 stawałby się on wówczas automatycznie głową listy i musiałby zos
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, cz
ALG5 5.1 Listy jednokierunkowe 105 Na rysunku 5-7 możemy przykładowo prześledzić jak powinna być wy
ALG9 5,1. Listy jednokierunkowe 109 Poruszony powyżej problem był na tyle charakterystyczny dla wie
ALG1 5.1. Listy jednokierunkowe 111 i zarobków. (Rozbudowa tych struktur danych nie wniosłaby konce
ALG3 5.1 Listy jednokierunkowe 113 int wzor(int x,int(*fun)(int!) [ return fun(x); ) void main(} i
ALG5 5.1. Listy jednokierunkowe 115 I res->gIowa=przed; res->oqon=pos; return (ras) ; } 1 •
ALG1 5.1 Listy jednokierunkowe 121 } cout << "

ALG7 5.2. Tablicowa implementacja list 1275.2.3.Listy innych typów Listy jednokierunkowe są bardzo
Zrozumiec Assembler2 40 Zrozumieć Asembler1.6.1 Kolumny i przeniesienia Mając już wprawę w dodawani
ALG7 2.4. Niebezpieczeństwa rekurencji 37 return (x-10); else return MacCarthy(MacCarthy(x111}); 1
ALG 4 94 Rozdział 5. Struktury danych5.1. Listy jednokierunkowe Lista jednokierunkowa jest oszczędną
ALG8 108__Rozdział 5. Struktury danych5.1.3.Listy jednokierunkowe - teoria i rzeczywistość Oprócz p
ALG 8 278 Rozdziału, Algorytmy numeryczne Mając macierz w takiej postaci, można już pokusić się o wy

więcej podobnych podstron