Ciao a tutti.. non riesco a capire comme posso aggiungere degli elementi tra un'elemento e l'altro della prima lista in modo da formarne un'altra come richiede l'esercizio seguente.. se qualcuno è in grado di darmi una mano gliene sarei molto grato, magari pure provando a spiegarmi il procedimento, grazie a tutti in anticipo..
codice:/*Esercizio 3 : Scrivere un programma che genera casualmente un vettore di interi e costruisce e stampa una lista che contiene gli elementi negativi del vettore. Inserire nel programma una funzione che inserisce DOPO ciascun elemento della lista un nuovo elemento che contiene il valore doppio e positivo dell'elemento considerato. Stampare la lista così ottenuta. Esempio: v[] = [3,-3,4,-4,-5,5] lista [3¨ 4¨ 5¨ NULL] lista_mod [3¨ 6 ¨ 4¨ 8 ¨ 5¨ 10 ¨ NULL] */ #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 5 struct lista{ int num; struct lista *prossimo;}; typedef struct lista L; L *crea_lista (L *,int); void stampa(L *); L *mod_lista (L *); main() { int i,v[N]; L *inizio=NULL; srand(time(NULL)); printf("\nVettore\n\n"); for(i=0;i<N;i++) { v[i]=-10+rand()%20; printf("\nV[%d] = %2d",i,v[i]); if (v[i]<0) inizio=crea_lista(inizio,v[i]); } stampa(inizio); mod_lista (L *); stampa(inizio); fflush(stdin); getchar(); } L *crea_lista(L *inizio, int numero) { L *p; p=(L *)malloc(sizeof(L)); p->num=numero; p->prossimo=inizio; return p; } void stampa(L *inizio) { printf ("\n\nLista [ "); while(inizio) { printf ("%d --> ",inizio->num); inizio=inizio->prossimo; } printf ("NULL ]"); } L * mod_lista(L *inizio) { L *p; int n; while(inizio) { } }

Rispondi quotando