Ciao ,scusate per gli errori sono nuovo del forum...cercherò di non fare più errori...Grazie per la disponibilità...
Allora il codice è questo....il problema si trova nella funzione modifica....mi da l errore:
<cannot convert 'L1*' to 'L2*'>..... Come se non potessi interagire tra puntatori di diverse liste....Penso sia l'idea che ha avuto MrX87.... se nn sbaglio ..
Ecco il codice:
codice:
 #include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define N 30
typedef struct l1{                   //DICHIARAZIONE STRUTTURE
			         int info;
                  struct l1 *next;
                  }*p;
typedef struct l1 L1;

typedef struct l2{
			         int info;
                  struct l2 *next;
                  }*q;
typedef struct l2 L2;

L1 *crea_lista1(L1*,int);              //PROTOTIPI
L2 *crea_lista2(L2*,int);
void stampa(L1*);
void stampa(L2*);
L1*modifica(L1*,L2*);


main(){                     //MAIN

L1*inizio1=NULL,*aux1;
L2*inizio2=NULL,*aux2;
int somma=0;
srand(time(NULL));

do{
inizio1=crea_lista1(inizio1,rand()%20);
aux1=inizio1;

inizio2=crea_lista2(inizio2,rand()%20);
aux2=inizio2;

somma+=aux1->info+aux2->info;}
while(somma<N);                   //CONTROLLO

printf("Somma = %d  \n",somma);
stampa(inizio1);
stampa(inizio2);

modifica(inizio1,inizio2);
stampa(inizio1);


free(inizio1);
free(inizio2);
fflush(stdin);
getchar();
}                                //FINE MAIN
                                         //IMPLEMENTAZIONE FUNZIONI
L1 *crea_lista1(L1*inizio,int dato)      //CREA LIFO L1
{
 L1*p;
 p=(L1*)malloc(sizeof(L1));
 p->info=dato;
 p->next=inizio;
 return(p);
 }

L2 *crea_lista2(L2*inizio,int dato)      //CREA LIFO L2
{
 L2*q;
 q=(L2*)malloc(sizeof(L2));
 q->info=dato;
 q->next=inizio;
 return(q);
 }

void stampa(L1*inizio)                //STAMPA L1
{ printf("La lista L1 =\n");
 while(inizio)
 {
  printf(" %d ",inizio->info);
  inizio=inizio->next;
  }printf("\n");
}

void stampa(L2*inizio)                //STAMPA L2
{
 printf("La lista L2 =\n");
 while(inizio)
 {
  printf(" %d ",inizio->info);
  inizio=inizio->next;
  }printf("\n");

}

 L1*modifica(L1*inizio1,L2*inizio2)        //MODIFICA L1
{
 L1 *aux1=inizio1;
 L2 *aux2=inizio2;

 inizio2=inizio2->next;
 aux1=aux1->next;
 aux2->next=aux1;
 inizio1->next=aux2;


 aux2=inizio2;

 return(inizio1);       }