You are on page 1of 3

Ispit iz predmeta Strukture podataka

29. lipnj 2016.

Napomena za sve zadatke:


• Nije dopušteno korištenje goto naredbe, te statičkih i globalnih varijabli.

Zadatak 1 (5)

Jedan zapis datoteke organizirane po načelu raspršenog adresiranja sadrži matični broj
studenta (int), ime i prezime (50+1 znak), godinu studija (int) te trenutni prosjek ocjena
(float). Prazni se zapis prepoznaje po matičnom broju jednakom nula (0). Veličina bloka na
disku je 2048 B. Očekuje se najviše 100000 zapisa, a tablica je dimenzionirana za 35% veći
kapacitet. Prilikom upisa primjenjuje se metoda cikličkog preljeva. Ključ zapisa je matični
broj, a pretvorba ključa u adresu se obavlja već pripremljenom funkcijom
Ključ zapisa je šifra artikla, a transformacija ključa u adresu obavlja se zadanom funkcijom:

int adresa(int matbr);

Napisati funkciju koja u dinamički alocirano polje (veličine: 10 * sizeof(element)) sprema


studente s zadanom godinom studija (godina studija je zadana u argumentu funkcije
„godinaStudija“). Kada se polje popuni zaustaviti izvršavanje programa. Funkcija vraća
adresu polja.

element *pronadji(FILE *f, int godinaStudija);

Zadatak 2 (5)

Za tip podatka Red definirane su funkcije (nije ih potrebno pisati) za inicijalizaciju reda,
dodavanje elementa u red te za skidanje elementa iz reda. Prototipovi navedenih funkcija su:

void init_red(Red *red);


int dodaj(int element, Red *red);
int skini(int *element, Red *red);

Funkcije dodaj i skini vraćaju 1 ako je operacija dodavanja ili skidanja uspjela, a 0 inače.
Elementi reda su podatci tipa int. Tip Red definiran je sljedećim programskim odsječkom:

typedef struct at {
int element;
struct at *sljed;
} atom;
typedef struct {
atom *ulaz;
atom *izlaz;
} Red;

Napisati funkciju koja pronalazi najveći i najmanji element u redu. I njihov zbroj dodaje na
početak reda.
void MinMax(Red *red);

Primjer:
Stari red:
->ULAZ 5, 6, 2, 15, 45 <-IZLAZ

MIN: 2
MAX: 45

Novi red:
->ULAZ 5, 6, 2, 15, 45, 47 <-IZLAZ

Zadatak 3 (5)

Na stog realiziran poljem spremaju se podaci cjelobrojnog tipa (int). Već su napisane funkcije
za skidanje sa stoga i stavljanje na stog.

Napisati dodatnu funkciju koja će promaći elementu u stogu i uvećati mu vrijednsot za 5. Ako
takvih elemenata ima više vrijednost ne smije biti uvećana niti jednom od njih.

Ta funkcija stogu smije pristupati samo preko funkcija za rad sa stogom (ne smije direktno
pristupati elementima polja). Prototipi funkcija za stavljanje i skidanje elemenata sa stoga su:

typedef struct{
int polje[MAXSTOG];
int vrh;
}Stog;

int dodaj(int element, Stog *stog);


int skini(int *element, Stog *stog);
int funkcija(Stog *stog, int trazeni);

Zadatak 4 (5)

Zadana je jednostruko povezana lista čiji zapis sadrži šifru artikla (long), naziv artikla
(50+1 znak) i količinu na skladištu (int). Potrebno je napisati funkciju koja će dodati novi
element na kraj liste, ako se u listi nalazi više od dva elementa. Prototip je:

int dodaj(cvor *glava, long sif, char *naziv, int kol);

Zadatak 5 (5)

Zadano je binarno stablo čiji čvor sadrži ime studenta (20+1 znak), prezime studenta (20+1
znak) i maticni broj (int). Napisati rekurzivnu funkciju koja izračunava broj listova u
stablu. Prototip funkcije je :

int broj (cvor *korijen);

You might also like