here-s a program i just can not get to work! Please help i`ve got exam in 2 days :-/
Code:
#include <stdio.h>
#include <stdlib.h>
#define max 100
typedef struct drvo
{
int broj;
struct drvo* levo,*desno;
}cvor;
cvor* napravi(int br)
{
cvor* novi=(cvor*)malloc(sizeof(cvor));
if(novi==NULL)
{
fprintf(stderr,"greska prilikom alokacije memorije");
exit(1);
}
novi->broj=br;
novi->levo=NULL;
novi->desno=NULL;
return novi;
}
cvor* ubaci(cvor* drvo, int br)
{
if(drvo==NULL)
{
return napravi(br);
}
else if(drvo->broj>br)
drvo->levo=ubaci(drvo->levo,br);
else if(drvo->broj<br)
drvo->desno=ubaci(drvo->desno,br);
}
void ispisi(cvor* drvo)
{
if(drvo!=NULL)
{
ispisi(drvo->levo);
printf("%d",drvo->broj);
ispisi(drvo->desno);
}
}
void oslobodi(cvor* drvo)
{
if(drvo!=NULL)
{
oslobodi(drvo->levo);
oslobodi(drvo->desno);
free(drvo);
}
}
void pronadji(cvor* drvo, int x)
{
if(drvo==NULL)
printf("element nije pronadjen \n");
else
{
if(drvo->broj==x)
printf ("elemen je u drvetu \n");
else if(drvo->broj<x)
pronadji(drvo=drvo->desno,x);
else
pronadji(drvo=drvo->levo,x);
}
}
int prebroji(cvor* drvo)
{
if(drvo==NULL)
return 0;
else
return
prebroji(drvo->levo)+1+
prebroji(drvo->desno);
}
int br_listova(cvor*drvo)
{
if (drvo==NULL)
return 0;
else if((drvo->levo==NULL) && (drvo->desno==NULL))
return 1;
return br_listova(drvo->levo)+br_listova(drvo->desno);
}
main(int argc, char argv[])
{
int f,j, i=0;
int a[max];
FILE *in;
if(argc>=2)
{
in=fopen("argv[1]","r");
if(in==NULL)
{
fprintf(stderr,"greska prilikom otvaranja datoteke %s za citanje",argv[1]);
exit(1);
}
}
else
{
fprintf(stderr,"nedovoljan broj argumenata \n");
exit(1);
}
while((f=fgetc(in))!=EOF)
if(isdigit(f))
{
a[i]=f;
i++;
}
cvor* drvo=NULL;
printf("blabla");
for(j=0;j<5;j++)
{
drvo=ubaci(drvo,a[j]);
}
ispisi(drvo);
putchar('\n');
pronadji(drvo,1);
printf("broj cvorova: %d \n",prebroji(drvo));
printf("broj listova: %d \n",br_listova(drvo));
oslobodi(drvo);
fclose(in);
}
Thanks in advance