Ho provato a implementare un algoritmo ma quando mando la stampa,dopo aver effettuato la cancellazione va in loop
definizione lista:
struct elemento{
struct elemento *next;
struct elemento *prec;
int x;
};
funzioni:
struct elemento *crea(){
struct elemento *p,*punt=NULL;
int i,n;
printf("specificare il numero di elementi\n");
scanf("%d",&n);
if(n==0)
p=NULL;
else{
p=(struct elemento *)malloc(sizeof(struct elemento));
printf("inserisci il valore\n");
scanf("%d",&p->x);
punt=p;
p->prec=NULL;
for(i=2;i<=n;i++){
punt->next=(struct elemento *)malloc(sizeof(struct elemento));
punt->next->prec=punt;
punt=punt->next;
printf("inserisci l'elemento %d\n",i);
scanf("%d",&punt->x);
}
punt->next=NULL;
}
return p;
}
void stampa(struct elemento *top){
if(top!=NULL){
printf("%d",top->x);
stampa(top->next);
}
}
struct elemento * togli_numero(struct elemento *top,int x){
if(top!=NULL){
if(top->x==x){
struct elementi *res=NULL;
res=top->next;
free(top);
top=res;
}
else
top->next=togli_numero(top->next,x);
}
return top;
}
main:
int main()
{
struct elemento *top=NULL;
struct elemento *top2=NULL;
top=crea();
stampa(top);
top=togli_numero(top,3);
stampa(top);
return 0;
}
sai dirmi dove sbaglio?