Si ferma aspettando (apparentemente) qualcosa. Come quando una scanf aspetta un valore.
L'intero codice è questo:
Ogni aiuto è ben accetto, grazie a tutti a prescindere per l'interessamentocodice:struct s_info { char nome[15]; }; typedef struct s_info t_info; struct s_node { t_info info; struct s_node* link; }; typedef struct s_node t_node; typedef t_node* t_list; t_info read_info(); t_list list_insert(t_list,t_info); t_list list_create(); t_node* node_create(t_info); bool greater(t_info,t_info); bool equal(t_info,t_info); t_list node_delete(t_list lista,t_info inf) { t_node* prec=NULL; t_node* curr=lista; while((curr!=NULL) && greater(inf,curr->info)) { prec=curr; curr=curr->link; } if(curr!=NULL && equal(inf,curr->info)) { if(prec==NULL) { lista=curr->link; } else { prec->link=curr->link; } free(curr); return lista; } return lista; } void print_list(t_list); void print_info(t_info); //MAINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN t_list inverti_lista(t_list); int main() { int scelta=1; t_list lista; t_info inf; lista=list_create(); while(scelta!=0) { inf=read_info(); lista=list_insert(lista,inf); printf("Vuoi inserire un altro elemento? 1/0 \n"); scanf("%d",&scelta); } printf("La lista letta e' : \n"); print_list(lista); printf("Inserire il nome da cancellare\n"); inf=read_info(); lista=node_delete(lista,inf); printf("La lista dopo la cancellazione:\n"); print_list(lista); lista=inverti_lista(lista); printf("Lista invertita:\n"); print_list(lista); return EXIT_SUCCESS; } //FINE MAINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN t_info read_info() { t_info inf; printf("Inserire il nome\n"); scanf("%s",inf.nome); return inf; } t_list list_insert(t_list lista,t_info inf) { t_node* new; t_node* prec=NULL; t_node* curr=lista; while(curr!=NULL && greater(inf,curr->info)) { prec=curr; curr=curr->link; } new=node_create(inf); if(new==NULL) exit(1); if(prec==NULL) { new->link=lista; return new; } else { prec->link=new; new->link=curr; return lista; } } t_list list_create() { return NULL; } t_node* node_create(t_info inf) { t_node* node; node=(t_node*)malloc(sizeof(t_node)); if(node==NULL) { printf("Errore nell'inserimento del nodo\n"); return NULL; } else { node->info=inf; node->link=NULL; return node; } } bool greater(t_info info1,t_info info2) { if(strcmp(info1.nome,info2.nome)>0) return true; else return false; } void print_list(t_list lista) { printf("sono dentro"); t_node* curr=lista; while(curr!=NULL) { print_info(curr->info); curr=curr->link; } } void print_info(t_info inf) { printf("%s ", inf.nome); } bool equal(t_info info1,t_info info2) { if(strcmp(info1.nome,info2.nome)==0) return true; else return false; } t_list inverti_lista(t_list lista) { printf("sono dentro"); t_node*curr; t_node*first; curr=lista; first=lista; while((curr->link)!=NULL) { (curr->link)->link=curr->link; curr=curr->link; } first->link=NULL; lista=curr; return lista; }![]()

Rispondi quotando