Binært søketre Problem Importere navn fra txt i C

stemmer
0

Jeg har en lekser som spør fro meg å sette inn fra et tekstdokument 100 studenter navn og ID-er formatert som (etternavn Navn ID) annonse deretter sette i to binære søketrær. Hoved BST inneholder etternavn og en peker til den andre BST som vil inneholde navn og ID-ene. Dette er første gang at jeg er trynig å bruke pekere (*, ->, og) så jeg er tapt. Jeg klarte å importere teksten med følgende funksjon

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);
   }

Og nå prøver jeg å skape innsatsen funksjon som er veldig vanskelig for meg fordi jeg ikke kan forstå argumentene om at hun skulle ta

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;
}

Her er strukturen definisjon:

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;

Kan noen hjelpe meg korrigere innsatsen funksjon fordi jeg ikke kan forstå hvilke argumenter jeg må bruke for å lagre etternavn og jeg vil gjøre resten selv. Jeg tror at problemet mitt er innsatsen funksjon. Takk uansett.

Publisert på 22/05/2011 klokken 15:36
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Egentlig har du fått den vanskelige delen. Problemet er strcpyat du bare vil

strcpy(node->surname, sname)

å kopiere navnet føres inn i nettverksstrukturen.

Som en side, jeg er litt ukomfortabel med frigjøring st->namei loadDatafunksjon. Hva skjer første gang du kaller funksjonen? Forhåpentligvis st->namevil si NULL, men en foret måte ville være å ha en egen ødelegge funksjon som frigjør et helt tre. Deretter kan du koble den loadDataog destroyDatafunksjon. Det er alltid best å ha tildeler og frigjør som par på denne måten. Det gjør det lite sannsynlig at du vil lekke minne, dobbel gratis, etc.

Svarte 22/05/2011 kl. 15:46
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more