Ich habe eine Hausaufgaben, die fro mich fragen, aus einem Textdokument 100 Studenten Namen und IDs einfügen formatiert wie (Name Vorname ID) ad dann die binäre Suchbäume in zwei gesetzt. Der Haupt BST enthält Namen und einen Zeiger auf den anderen BST, die Namen und IDs enthalten. Dies ist das erste Mal, dass ich trynig Zeiger zu verwenden (*, ->, &), so bin ich verloren. Ich schaffte es, den Text mit der folgenden Funktion zu importieren
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);
}
Und jetzt bin ich versucht, die Insert-Funktion zu schaffen, die für mich sehr schwierig ist, weil ich nicht die Argumente verstehen, dass sie nehmen sollte
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;
}
Hier ist die Strukturdefinition:
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;
Kann mir jemand helfen, die Insert-Funktion zu korrigieren, weil ich nicht verstehen kann, welche Argumente ich den Namen speichern verwenden müssen, und ich werde den Rest selber. Ich denke, dass mein Problem die Insert-Funktion ist. Danke trotzdem.













