Ragazzi stò cercando di utilizzare questa funzione :
praticamente è l'inserimento in un albero binario di ricerca utilizzando un metodo iterativo.codice:// Inserimento in un BST iterativo NODO *BST_InsertIter(NODO *root, COMPARE Compare, void *value) { NODO *New_Node, *curr, *prev; curr = root; // ricerco la posizione prev = NULL; while ( curr != NULL ) { // salvo il nodo precedente prima di scorrere con il corrente prev = curr; if ( Compare ( value, curr->info ) < 0 ) { // vado verso sinistra curr = curr->sx; } else if ( Compare ( value, curr->info ) > 0 ) { // vado verso destra curr = curr->dx; } } // creazione del nuovo nodo da inserire New_Node=(NODO*)malloc(sizeof(NODO)); New_Node->sx = NULL; New_Node->dx = NULL; New_Node->info = value; /* aggiornamento * se il valore è più piccolo del nodo corrente che non ha più figli(nè destro nè sinistro) * aggiungo il nodo a sinistra altrimenti a destra */ if ( Compare ( value, curr->info ) < 0 ) prev->sx = New_Node; else if ( Compare ( value, curr->info ) > 0 ) prev->dx = New_Node; return root; }
nel main ho:
codice:char *stringa; NODO *rootString; printf("Inserisci la stringa da inserire:\n"); stringa = GetInput(); rootString = BST_InsertIter(rootString, &CompareString, stringa );
funzione GetInput
Quando provo a inserire un elemento si blocca il programma eppure non riesco a capire il perchè, qualcuno può aiutarmi?codice:char *GetInput(void) { char* result=(char*)malloc(10*sizeof(char)),temp,length=0,dim=10; while( (temp=getchar())!=10) { length++; if(dim<length) { dim+=10; result=(char*)realloc(result,dim*sizeof(char)); } result[length-1]=temp; } result[length]='\0';//aggiunge il terminatore stringa return result; }
Grazie anticipatamente

Rispondi quotando