Il testo: Scrivere una funzione ricorsiva che data una lista concatenata di interi , restituisca una nuova lista costituita dagli elementi di posto dispari
il mio codice :
e giustamente l'errorecodice://ritorna lista con gli elementi di posto dispari #include<stdio.h> #include<stdlib.h> struct elemento{ int inf; struct elemento*next; }; struct elemento* disp_lista(struct elemento*,int); struct elemento* crea_lista(int); int main(void){ struct elemento*testa,*primo_disp=NULL; int dim,i=1; printf("Inserisci gli elementi della lista\n"); scanf("%d",&dim); testa=crea_lista(dim); primo_disp=disp_lista(testa,i); while(primo_disp!=NULL){ printf("%d",primo_disp->inf); printf("->"); primo_disp=primo_disp->next; } printf("NULL\n"); system("pause"); return 0; } struct elemento*crea_lista(int dim){ struct elemento *testa,*curr,*aus; int i=0; testa=(struct elemento*)malloc(sizeof(struct elemento)); printf("inserisci elemento %d\n",i+1); scanf("%d",&testa->inf); testa->next=NULL; curr=testa; for(i=1;i<dim;i++){ aus=(struct elemento*)malloc(sizeof(struct elemento)); printf("inserisci elemento %d\n",i+1); scanf("%d",&aus->inf); curr->next=aus; curr=aus; aus->next=NULL; } return testa; } struct elemento*disp_lista(struct elemento*curr,int i){ struct elemento*aus=NULL,*primo=NULL; if(curr==NULL) return NULL; else{ if(i%2!=0){ aus=(struct elemento*)malloc(sizeof(struct elemento)); aus=curr; aus->next=disp_lista(curr->next,i++); return aus; } else aus=disp_lista(curr->next,i++); } }: il problema è che nella funzione non incrementa la variabile i e nella condizione dell'else non entra di conseguenza

: il problema è che nella funzione non incrementa la variabile i e nella condizione dell'else non entra di conseguenza
Rispondi quotando
