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