ho provato ad inserire il file in lista ma ha impiegato 1h e 25 min per effettuare l'inserimento. Ti posto il codice che ho usato. A meno che non ho commesso qualche errore che rallenta l'esecuzione non credo sia il metodo migliore da usare. Con il file sequenziale, anche se non riesco ad ordinarlo, è errato?

Codice PHP:
#include<stdio.h> 
#include<stdlib.h> 
#include<string.h>  
struct lista{        
char stringa[30];        
struct lista *pun;        
}; 
 
/* dichiarazione delle funzioni */ 
void letturaFile(FILE *, struct lista **); 
void inserimento(struct lista **, char *); 
void stampaLista(struct lista *);  

main() {       
FILE *f;       
struct lista *NULL;              

letturaFile(f, &p);              
stampaLista(p);              
system("PAUSE");              
return 
0;              
}       
 
/* definizione funzioni */  
void letturaFile(FILE *fstruct lista **p
{      
char parola[20];      
if(( 
fopen("zingarelli2005.txt""r")) == NULL)           
printf("Impossibile aprire il file\n");      
else{           
while(!
feof(f)){                
fscanf(f"%s"parola);                
inserimento(pparola);                
}                
}      
fclose(f); 
}  

void inserimento(struct lista **pchar *value
{      
struct lista *p0, *p1, *p2;            
p0=(struct lista *)malloc(sizeof(struct lista));   
if(
p0 != NULL){
strcpy(p0->stringavalue);         
p0->pun NULL;                         
p1 NULL;         
p2 = *p;               
while(
p2 != NULL && strcmp(valuep2->stringa) > 0){
p1 p2;                                 
p2 p2->pun;                          
}         
if(
p1 == NULL){            
p0->pun = *p;            
*
p0;            
}        
else{              
p1->pun p0;              
p0->pun p2;              
}              
}         
else             
printf("%s nn inserito. Memoria nn disponibile\n"); 
}  

void stampaLista(struct lista *p2
{      
if(
p2 == NULL)                    
printf("la lista e' vuota\n");      
else{           
printf("la lista e':\n");                      
while(
p2 != NULL){                            
printf("%s\n"p2->stringa);                            
p2 p2->pun;                            }                                       
printf("NULL\n\n");           
}