Ho questo codice che inserisce in una lista i valori e successivamente dovrebbe aggiungere 0 dopo tutti i valori dispari.
Il problema è che inserisce zero dopo tutti i valori indiscriminatamente.
Sapreste correggermi per favore. Grazie
codice:#include "stdafx.h" #include <stdio.h> #include <malloc.h> typedef struct neg { int info; struct neg *next; }*p; typedef struct neg Neg; Neg *crea_lista(Neg*, int); void stampa(Neg*); void ins(Neg*, int, int); int dato, dove; main() { // MAIN int v[5], i; Neg *inizio = NULL; Neg *in; for (i = 0; i<5; i++) { printf("Scrivi 5 elementi :\n\n"); scanf("%d", &v[i]); if (v[i]>0) inizio = crea_lista(inizio, v[i]); } in = inizio; stampa(inizio); while (in) { //CHIAMATA FUNZ.INSERIMENTO dove = in->info; dato = 0 * in->info; ins(in, dove, dato); in = in->next->next; } stampa(inizio); fflush(stdin); getchar(); } Neg *crea_lista(Neg *inizio, int dato) //CREA LISTA { Neg *p; p = (Neg*)malloc(sizeof(Neg)); p->info = dato; p->next = inizio; return(p); } void ins(Neg *in, int dove, int dato) //INSERISCI { Neg *q, *aux; q = (Neg*)malloc(sizeof(Neg)); q->info = dato; q->next = NULL; aux = in; while ((aux->info != dove) && (aux)) aux = aux->next; if (aux) { q->next = aux->next; aux->next = q; } else printf("Elemento assente"); } void stampa(Neg *inizio) { //STAMPA while (inizio) { printf(" %d ", inizio->info); inizio = inizio->next; } printf("\n\n"); }

					
					
					
						
  Rispondi quotando

