Salve a tutti! Sto studiando per un esame di Fondamenti di Informatica, e sono proprio alle prime armi con l'utilizzo del linguaggio C. Ho incontrato alcuni problemi con le liste: dopo tanti tentativi non riesco a capire come ordinare alfabeticamente una lista.
Un esempio di codice che ho creato è questo, potreste indicarmi una soluzione,ad esempio una funzione di ordinamento??
Vi ringrazio in anticipo per la disponibilità!

codice:
#include<stdio.h> 
#include<stdlib.h> 
#include<iostream>
 typedef struct { 
int num; char nome[30]; 
}Invitato; 

struct InvitoFesta; 
typedef InvitoFesta*PuntInvitoFesta;

 typedef struct InvitoFesta{ 
Invitato invito;
 InvitoFesta *invitatoSuccessivo; 
}InvitoFesta;

 InvitoFesta*inserisci(PuntInvitoFesta L,int i,char*testo){ 
PuntInvitoFesta nuovo; 
nuovo=(PuntInvitoFesta) malloc(sizeof(InvitoFesta));
 nuovo->invitatoSuccessivo=L;
 nuovo->invito.num=i; 
strcpy(nuovo->invito.nome,testo);
 return (nuovo); 
} 

void stampaLista (PuntInvitoFesta L){
 PuntInvitoFesta nuovo; 
nuovo=L; 

while(nuovo!=NULL){ 
printf("%s\n",nuovo->invito.nome);
 nuovo=nuovo->invitatoSuccessivo; 
} 
} 

int main (){
 PuntInvitoFesta Lista;
 Lista=NULL;
 int i=1; 
char text[20];

 printf("Inserisci invitato num. %d: \n",i); 
printf("(digita fine per terminare)\n"); 
scanf("%s",text); 

while(strcmp(text,"fine")!=0){ 
Lista=inserisci(Lista,i,text);
 printf("Inserisci invitato num. %d: \n",i); 
printf("(digita fine per terminare)\n"); 
scanf("%s",text); i++; 
} 
printf("\n"); 
printf("Visualizzo Lista Invitati:\n"); 

stampaLista(Lista); 
free(Lista); 
system("PAUSE");
 return 0; 
}