Professional Documents
Culture Documents
Spa Zadatci
Spa Zadatci
struct cv {
int element;
struct cv *sljed;
};
typedef struct cv cvor;
Cvor *trazi (cvor *glava, int element){
cvor *p;
for (p=glava; p!=NULL; p=p->slijedeci){
if (p->element==element) return p;
}
return NULL;
}
//pomocni cvor
//prolazi kroz elemente
//
//ponovi 2 puta
//postavi p da je jednak *glavap
//postavi *glavap na sljedei
//obrisi p
napisati funkciju koja iz zadane liste u koju se zapisuju cijeli brojevi int brie parne elemente
void brisiParne(cvor **glavap){
cvor *p;
while(*glavap)
if (*glavap%2==0){
p=*glavap;
*glavap=(*glavap)->sljed
delete (p);
}
Clan->Slijedeci = NULL;
//posto je zadnji clan->sljendeci postavljam na NULL
if( *Lista == NULL ) {
*Lista = Clan;
} else {
p = *ClanListe;
while( p->Slijedeci != NULL ) p = p->Slijedeci;
p->Slijedeci = Clan;
}
}
napisati funkciju koja e vratiti koliinu zapisanu u zadnjem lanu. Ako je prazna vraa -1
int kol_zadnji (atom *glava){
atom *p;
if (glava==null) return -1;
else {
while( p->Slijedeci != NULL )
p = p->Slijedeci;
if (p->sljedeci==NULL)
return p->kolicina;
}
}
BINARNA STABLA
Struktura stabla
struct cvor{
tip element;
struct cvor *lijevo;
struct cvor *desno;
}
izraunati broj neparnih vorova
int broj (cvor *korijen){
if (korijen==NULL) return 0;
if (korijen->element%2==1) return 1+broj(korijen->lijevo)+broj(korijen->desno);
return 0+broj(korijen->lijevo)+broj(korijen->desno);
}
izraunati broj elemenata koji nisu listovi
STOG
STRUKTURA STOGA
#define MAXSTOG 5
typedef struct {
int vrh, polje[MAXSTOG];
} Stog;
//inicijalizacija stoga
void init_stog(Stog *stog){
stog->vrh = -1;
}
int dodaj (int element, Stog *stog) {
if (stog->vrh >= MAXSTOG-1) return 0;
stog->vrh++;
stog->polje[stog->vrh] = element;
return 1;
}
int skini (int *element, Stog *stog) {
if (stog->vrh < 0) return 0;
*element = stog->polje[stog->vrh];
stog->vrh--;
return 1;
}
REKURZIJA
Napisati rekurzivnu funkciju koja izraunava broj znamenki zadanog broja
(n.pr. bz(12329)= 5). Koristiti operator cjelobrojnog dijeljenja integera (/).
Prototip funkcije je:
intbz(inta){
if(a==0)return0;
else
return1+bz(a/10);
}
365>>1
36>>1
3>>1
0>>0
RED
Funkcija koja dodaje zapis u red te vraa 1 ako je uspjenop dodavanje, a 0 ako nije
struct zapisuRed {
sifra long;
char naziv[50+1];
float cijena;
} zapis;
int dodaj (zapis element, Red *red){
if(red->ulaz+1) % MAXRED == red->izlaz) return 0;
red->ulaz++;
red->ulaz %= MAXRED;
red->polje [red->ulaz] = element;
return 1;
}
n zapisa
sifra, opis procesa
funkcija koja do
int dodaj (proces element, proces red[], int n, int izlaz, int *ulaz)