ORDINAMENTO ALFABETICO LISTE: OUTPUT INATTESO

di il
1 risposte

ORDINAMENTO ALFABETICO LISTE: OUTPUT INATTESO

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;

  }

}

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte