Ciao a tutti, questo è il mio primo post su questo forum e volevo intanto farvi i complimenti perchè è grazie a voi che ho risolto molti problemi riguardo la programmazione
Ci tengo a sottolineare che ho usato la funzione cerca ma purtroppo non trovo una soluzione adeguata al mio caso. Volevo chiedere aiuto a voi che certamente siete più competenti di me. Sto studiando il linguaggio c per l'università e mi sono imbattuto in un problema che non riesco a risolvere. Ho una lista dinamica di dati, in particolare di informazioni su una persona, e dovrei ordinare questa lista in ordine dal più giovane al più anziano, vi posto il codice:
codice:
#include <stdio.h>
#include <stdlib.h>
#define MAXN 15
typedef struct Person
{
char name[MAXN];
int age;
double weight;
struct Person *next;
} Person;
Person *createlist(Person *list);
void fillperson(Person *list);
void printlist(Person *list);
Person *bubblesort(Person *list);
int main()
{
Person *people;
char s;
people = (Person *) malloc(sizeof(Person));
people=NULL;
people=createlist(people);
printf("Inserire nuova voce? (s/n) ");
s=getchar();
while((s = getchar()) =='s')
{
getchar();
putchar('\n');
putchar('\n');
people=createlist(people);
putchar('\n');
printf("Inserire nuova voce? (s/n) ");
s=getchar();
}
printlist(people);
printlist(people);
free(people);
return 0;
}
Person *createlist(Person *list)
{
Person *nuovo;
Person *p;
nuovo = (Person *) malloc(sizeof(Person));
fillperson(nuovo);
if(list==NULL)
list=nuovo;
else
{
p=list;
while(p->next)
p=p->next;
p->next = (Person *) malloc (sizeof(Person));
p->next = nuovo;
}
return list;
}
void fillperson(Person *list)
{
printf("Inserire il nome della persona: ");
gets(list->name);
printf("Inserire l'eta' della persona: ");
scanf("%d",&(list->age));
printf("Inserire l'altezza della persona: ");
scanf("%lf",&(list->weight));
list->next=NULL;
}
void printlist(Person *list)
{
printf("\n\nInizio lista ---> \n\n");
while(list)
{
printf("Nome: %s\n",list->name);
printf("Eta': %d\n",list->age);
printf("Altezza: %.2lf\n\n\n",list->weight);
list=list->next;
}
printf("---> Fine lista\n\n");
}
So che probabilmente è di facile risoluzione ma io non riesco a capire come implementare il codice... Il mio professore di programmazione all'università, con tutto rispetto parlando, è un asino, quindi è escluso chiedere a lui -.- Pensate che addirittura pretende che si ordiniamo tutto con il bubblesort perchè è l'unico algoritmo di ordinamento che capisce e sa insegnare -.- infatti io purtroppo so usare solo quello... Comunque, se qualcuno saprebbe spiegarmi come fare la funzione per ordinare la lista sarebbe veramente una cosa gradita! Ancora meglio se potesse postare una funzione da lui fatta così da capire meglio... Se è possibile preferirei che se fosse necessario un algoritmo di ordinamento usaste il bubblesort, dato che l'esame lo devo fare con quel prof preferisco farlo come vuole lui e poi studiarmi le cose in futuro con calma... Vi ringrazio in anticipo, se servono altre informazioni chiedete pure!!