Si ferma aspettando (apparentemente) qualcosa. Come quando una scanf aspetta un valore.
L'intero codice č questo:
codice:
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;
}
Ogni aiuto č ben accetto, grazie a tutti a prescindere per l'interessamento