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)
     {
          
     }
}