4. vje~zbe iz C-a

✓XHTML1

Sadr~zaj

Ukratko, strukture podataka i algoritmi. Preciznije, implementacija tipova podataka kao struct, i njihovo sortiranje i pretra~zivanje.

Dvije glavne funkcije

void qsort (const void *polje, 
	    int dimenzija_polja, 
	    int velicina_svakog_elementa, 
	    int (*cmpfun)(const void *, const void *)
    )
void *bsearch (const void *sto_trazimo, 
	       const void *polje, 
	       int dimenzija_polja, 
	       int velicina_svakog_elementa, 
	       int (*cmpfun)(const void *, const void *)
    )
Nalaze se u biblioteci stdlib.h. Rade na poljima, pri tome je bitno da bsearch radi samo na sortiranim poljima. Primaju void-pointere kako bi mogle biti op~tenite i raditi za polja proizvoljnih struktur~a -- naravno, u svakom danom primjeru trebamo cast-ati pointere na na~se strukture u void-pointere prilikom poziva danih funkcij~a, i void pointer koji nam funkcija bsearch vrati, ako ga ~zelimo koristiti, cast-ati natrag u pointer na zadanu strukturu. Veli~cina svakog elementa, koja se tako~der treba prenijeti kao parametar, lako se dobije primjenom makroa sizeof.
Zadnji argument je pointer na funkciju koja slu~zi za uspore~divanje prilikom sortiranja i binarnog pretra~zivanja. Tu funkciju treba posebno napisati. Primijetimo da ona prima void pointere (iz istog razloga), te unutar nje prvo treba njene argumente cast-ati u pointere na odgovarajuće strukture. Funkcija treba vratiti -1 ako je njen prvi argument "manji" (u na~sem definiranom ure~daju) od drugog, 1 ako je "ve~ti", te 0 ako se smatraju jednakima (qsort ih mo~ze ostaviti u bilo kojem poretku, a bsearch mo~ze smatrati da je na~sao tra~zeni element ako cmpfun vrati 0 ).

Formalna dokumentacija

stdlib | bsearch | qsort

Zadaci