Ragazzi stò cercando di utilizzare questa funzione :
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;
}
praticamente è l'inserimento in un albero binario di ricerca utilizzando un metodo iterativo.
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
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;
}
Quando provo a inserire un elemento si blocca il programma eppure non riesco a capire il perchè, qualcuno può aiutarmi?
Grazie anticipatamente