Am o temă care cere fro mi-a insera dintr-un document de text 100 de nume de studenți și ID-urile formatate ca anunț (Nume ID-ul), apoi a pus în doi copaci binar de căutare. Principalul BST va conține numele de familie și un pointer la celălalt BST, care va conține numele și ID-uri. Aceasta este prima dată când eu sunt trynig să utilizeze indicii (*, ->, &), asa ca sunt pierdut. Am reușit să importe textul cu următoarea funcție
void loadData(char fname[], Students *st){
struct Students *new;
root=NULL;
int i;
FILE *fp;
fp=fopen(fname,r);
if (fp == NULL) printf(File does not exist\n);
fscanf(fp, %d, &(st->size)); //reads the number of students
free(st->name);
st->name=(Name*) malloc(st->size*(sizeof(Name)));
for (i=0; i<st->size; i++){
fscanf(fp, %s,&st);
insert(root,st.surname);/////////I think here is the problem
//fscanf(fp, %s, &st->name[i].firstname);
// fscanf(fp, %d, &st->name[i].id);
}
fclose(fp);
}
Și acum am încercat să creeze funcția de inserție, care este foarte dificil pentru mine, deoarece eu nu pot înțelege argumentele pe care ea ar trebui să ia
STU *insert(STU *node, char *sname)///What should i use here to save take the Surname??
{
if(node==NULL){
node=(NODE *) malloc(sizeof(STU));
strcpy(node->surname);
node->left=NULL;
node->right=NULL;
}
else{
if(strcmp(*sname, node->surname)<0)
insert(node->left, *sname);
else if(strcmp(*sname, node->surname)>0)
insert(node->right, *sname);
}
return node;
}
Aici este definiția structura:
typedef struct Name{
char firstname[20];
int id;
struct Students *nameleft;
struct Students *nameright;
} Name;
typedef struct Students{
char surname[20];
Name *name;
int size;
struct Students *left;
struct Students *right;
} Students;
typedef struct Students STU;
struct Students *insert(char num);
struct Students *root=NULL;
Poate cineva să mă ajute să corecteze funcția de inserție, deoarece eu nu pot înțelege ce argumente i trebuie să folosească pentru a salva numele și i se va face restul eu. Cred că problema mea este funcția de inserție. Multumesc oricum.













