Salve a tutti, sto scrivendo un programma che inserisca in una lista concatenata delle stringhe.
Il problema è che testandolo non da gli output ordinati correttamente.
Per esempio se io passo come stringhe da ordinare: da, abaco, zeta, sasso, polpa.
Il programma mi restituisce abaco, da, zeta, polpa, sasso.
Vi posto il codice con cui inserisco ogni elemento nella lista: non riesco proprio a capire dove stia sbagliando.
Ringrazio tutti anticipatamente
list* insertList(list *l, char *info){
if(l==NULL){
list *new=(list*) malloc(sizeof(list));
new->key=(char*) malloc(1024*sizeof(char));
new->key=strcpy(new->key, info);
new->next=NULL;
return new;
}
if( strcmp(info, l->key)<0 ){
list *new=(list*) malloc(sizeof(list));
new->key=(char*) malloc(1024*sizeof(char));
new->key=strcpy(new->key, info);
new->next=l;
return new;
}
else{
list *tmp=l;
while(tmp->next!=NULL){
if( strcmp(info, tmp->key)<0 ){
list *new=(list*) malloc(sizeof(list));
new->key=(char*) malloc(1024*sizeof(char));
new->key=strcpy(new->key, info);
new->next=tmp->next;
tmp->next=new;
return l;
}
tmp=tmp->next;
}
tmp->next=(list*) malloc(sizeof(list));
tmp->next->key=(char*) malloc(1024*sizeof(char));
tmp->next->key=strcpy(tmp->next->key, info);
tmp->next->next=NULL;
return l;
}
}