Bir metin belgesinden sonra da iki ikili arama ağaçları koymak (Soyadı Adı ID) reklam gibi biçimlendirilmiş 100 öğrenci adları ve kimlikleri eklemek için bana fro sormak bir ödev var. Ana BST soyadı ve isim ve kimliklerini içerecek diğer BST için bir işaretçi ihtiva edecektir. (->, & *,) bu yüzden ben kayboldum Bu i işaretçileri kullanmak trynig ediyorum ilk defa. Aşağıdaki işlevi ile metin içe başardı
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);
}
Ve şimdi o almak gerektiğini ı argümanları anlayamıyorum çünkü benim için çok zor insert fonksiyonunu oluşturmak çalışıyorum
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;
}
İşte yapısı tanımı şöyledir:
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;
Herkes ben soyadını kaydetmek için kullanması gereken argümanlar anlayamaz ve ben Gerisini kendim yapacağım çünkü beni insert işlevini düzeltmek yardımcı olabilir. Benim sorun ekleme fonksiyonu olduğunu düşünüyorum. Yine de teşekkürler.













