#include<stdio.h>
#include<stdlib.h>
typedef struct type_nodo{
int num;
struct type_nodo *prox;
};
type_nodo *crea_lista();
void leggi_lista(type_nodo *);
int elimina_elemento(type_nodo *);
/*************************main********************* ****/
main(){
type_nodo *testa=NULL;
int scelta=0;
int elemento=0;
while(1){
printf("\n1 - Crea lista");
printf("\n2 - Visualizza lista");
printf("\n3 - Elimina elemento\n\n");
scanf("%d",&scelta);
switch(scelta){
case 1:
system("CLS");
testa=crea_lista();
break;
case 2:
system("CLS");
leggi_lista(testa);
break;
case 3:
elimina_elemento(testa);
break;
default:
printf("\nScelta non valida");
break;
}
system("PAUSE");
system("CLS");
}
}
/************************Crea lista****************************/
type_nodo *crea_lista(){
type_nodo *testa=NULL;
type_nodo *paus=NULL;
int scelta=0,i=0;
printf("\tCreazione lista\n\n");
printf("\nQuanti elementi vuoi inserire? ");
scanf("%d",&scelta);
testa=(type_nodo *)malloc(sizeof(type_nodo));
if(testa==NULL){
printf("\nMemoria esaurita");
return testa;
}
if(scelta==0){
printf("\nLista non creata");
return testa;
}
printf("Inserisci il 1 elemento ");
scanf("%d",&testa->num);
testa->prox=NULL;
if(scelta==1) return testa;
paus=testa;
for(i=2;i<=scelta;i++){
paus->prox=(type_nodo *)malloc(sizeof(type_nodo));
paus=paus->prox;
printf("Inserisci il %d elemento ",i);
scanf("%d",&paus->num);
paus->prox=NULL;
}
return testa;
}
/*********************visualizza lista***********************/
void leggi_lista(type_nodo *testa){
if(testa==NULL) printf("\nLa lista è vuota");
type_nodo *paus=NULL;
paus=testa;
printf("\n");
while(paus!=NULL){
printf("%d\t",paus->num);
paus=paus->prox;
}
printf("\n\n");
}
/******************elimina elemento**************************/
int elimina_elemento(type_nodo *testa){
int elemento=0;
if(testa==NULL){
printf("La lista e' vuota\n\n");
return 0;
}
leggi_lista(testa);
printf("Quale elemento vuoi eliminare? ");
scanf("%d",&elemento);
type_nodo *paus=NULL;
paus=testa;
if(paus->num==elemento){
testa=testa->prox;
free(paus);
printf("%d",testa->num);
}
else{
while(paus->prox->num!=elemento){
paus=paus->prox;
if(paus=NULL){
printf("Elemento non trovato");
return 0;
}
}
type_nodo *pfree=NULL;
pfree=paus->prox;
paus->prox=paus->prox->prox;
free(pfree);
}
}