#include<stdio.h>
#include<time.h>
#include<stdlib.h>
typedef struct nodo
{
int valore;
struct nodo *next;
}nodoP;
//struttura
//prototipi
nodoP *inserisci_testa(nodoP *testa,int dato);
int conta_nodi(nodoP *testa);
void stampa_testa (nodoP *testa);
void stampa_accoppiamenti (nodoP *accoppiamenti);
nodoP *accoppiamenti(nodoP *testa1,nodoP *testa2,nodoP *testa3, int dato);
int main()
{
srand(time(NULL));
nodoP *testa1=NULL;
nodoP *testa2=NULL;
nodoP *testa3=NULL;
nodoP *accoppiamenti=NULL;
testa1=malloc(sizeof(nodoP));
testa2=malloc(sizeof(nodoP));
testa3=malloc(sizeof(nodoP));
accoppiamenti=malloc(sizeof(nodoP));
int num_nodi1;
int num_nodi2;
int num_nodi3;
int i;
int dato;
printf("inserisci numero dei nodi della prima lista: ");
scanf("%d",&num_nodi1);
printf("inserisci numero dei nodi della seconda lista: ");
scanf("%d",&num_nodi2);
printf("inserisci numero dei nodi della terza lista: ");
scanf("%d",&num_nodi3);
for(i=0;i<num_nodi1;i++)
{
dato=rand()%100;
testa1=inserisci_testa(testa1, dato);
}
for(i=0;i<num_nodi2;i++)
{
dato=rand()%100;
testa2=inserisci_testa(testa2, dato);
}
for(i=0;i<num_nodi3;i++)
{
dato=rand()%100;
testa3=inserisci_testa(testa3, dato);
}
num_nodi1=conta_nodi(testa1);
num_nodi2=conta_nodi(testa2);
num_nodi3=conta_nodi(testa3);
if(conta_nodi(testa1)<conta_nodi(testa2) && conta_nodi(testa1)<conta_nodi(testa3))
{
printf("la prima lista è la minore \n");
}
else if(conta_nodi(testa2)<conta_nodi(testa1) && conta_nodi(testa2)<conta_nodi(testa3))
{
printf("la seconda lista è la minore \n");
}
else
{
printf("la terza lista è la minore \n");
}
stampa_testa(testa1);
stampa_testa(testa2);
stampa_testa(testa3);
stampa_accoppiamenti(accoppiamenti);
}
//funzioni
nodoP *inserisci_testa(nodoP *testa, int dato)
{
nodoP *p=NULL;
p=malloc(sizeof(nodoP));
p->valore=dato;
p->next=testa;
testa=p;
return testa;
}
int conta_nodi(nodoP *testa)
{
int num_nodi=0;
nodoP *p=testa;
while(p!=NULL)
{
num_nodi=num_nodi+1;
p=p->next;
}
return num_nodi;
}
void stampa_accoppiamenti (nodoP *accoppiamenti) {
printf("valori degli accoppiamenti: \n");
nodoP *p=accoppiamenti;
while (p->next!=NULL) {
printf ("%d\n",p->valore);
p=p->next;}
}
void stampa_testa (nodoP *testa) {
printf("valori della lista: \n");
nodoP *p=testa;
while (p->next!=NULL) {
printf ("%d\n",p->valore);
p=p->next;}
}
nodoP *accoppiamenti(nodoP *testa1,nodoP *testa2,nodoP *testa3, int dato)
{
nodoP *p1=testa1;
nodoP *p2=testa2;
nodoP *p3=testa3;
nodoP *p=accoppiamenti;
p->valore=dato;
while(accoppiamenti!=NULL)
{
while(testa1!=NULL)
{
p1=p;
while(testa2!=NULL)
{
p2=p;
while(testa3!=NULL)
{
p3=p;
p3=p3->next;
}
p2=p2->next;
}
p1=p1->next;
}
testa1=inserisci_testa(testa1, dato);
p1->valore;
testa2=inserisci_testa(testa2, dato);
p2->valore;
testa3=inserisci_testa(testa3, dato);
p3->valore;
}
}
ho fatto tutto, lo stesso nn va…