Devo implementare questa funzione:
void set_difference(setSCL* set1, setSCL set2);
/*dato un puntatore set1 ad insieme ed un
insieme set2, elimina dall'insieme puntato da
set1 gli eventuali elementi presenti anche in set 2;*/
Nel main richiamo la funzione in questo modo:
set_difference(&insieme, sotto_insieme);
Ed ecco la funzione:
void set_difference(setSCL* set1, setSCL set2)
{
setSCL insieme = *set1, insieme_temp, salva_punt;
int temp, esterno = 1, interno = 1;
while(set2 != NULL)
{
printf("Ciclo esterno %d\n", esterno);
interno = 1;
temp = set2 -> elemento;
printf("\ttemp: %d\n", temp);
while(insieme != NULL)
{
printf("\tCiclo interno %d\n", interno);
printf("\t\tinsieme -> elemento = %d\n", insieme -> elemento);
if(temp == insieme -> next -> elemento)
{
printf("if\n");
insieme_temp = insieme -> next;
insieme -> next = insieme -> next -> next;
free(insieme_temp);
}
else
{
printf("else\n");
insieme = insieme -> next;
interno++;
}
}
set2 = set2 -> next;
esterno++;
}
}
La quale, però, mi da un
Errore di segmentazione (core dump creato)
In particolar modo mi stampa:
Elemento 1 dell'insieme: 1
Elemento 2 dell'insieme: 2
Elemento 3 dell'insieme: 6
Elemento 1 del sottoinsieme: 1
Elemento 2 del sottoinsieme: 2
Ciclo esterno 1
temp: 2
Ciclo interno 1
insieme -> elemento = 6
if
Ciclo interno 2
insieme -> elemento = 6
else
Ciclo interno 3
insieme -> elemento = 1
Errore di segmentazione (core dump creato)
Chi mi aiuta a trovare l'errore? Grazie