El problema me esta saliendo, el problema viene cuando quiero verificar para que no me pase ningun repetido.
Por eso cree la funcion esta que es una booleana, pero al poner esta funcion el programa se rompe.
No se en que le estoy pifiando.
Código
#include <stdio.h> #include <stdlib.h> #define T 4 #define N 5 struct s_alumno { int numero; }; typedef struct s_alumno t_alumno; t_alumno* CARGA (t_alumno arreglo1[T],t_alumno arreglo2[N]); int esta(t_alumno*,int); int main() { int i=0; t_alumno*liston=NULL; t_alumno arreglo1[T]; t_alumno arreglo2[N]; arreglo1[0].numero=1; arreglo1[1].numero=7; arreglo1[2].numero=3; arreglo1[3].numero=5; arreglo2[0].numero=2; arreglo2[1].numero=8; arreglo2[2].numero=5; arreglo2[3].numero=9; arreglo2[4].numero=7; printf("Conjunto A : %d - %d - %d - %d\n", arreglo1[0].numero,arreglo1[1].numero,arreglo1[2].numero,arreglo1[3].numero); printf("Conjunto B : %d - %d - %d - %d - %d \n",arreglo2[0].numero,arreglo2[1].numero,arreglo2[2].numero,arreglo2[3].numero,arreglo2[4].numero); liston=CARGA(arreglo1,arreglo2); while((liston+i)->numero!=0) { i++; } return 0; } t_alumno* CARGA(t_alumno arreglo1[T],t_alumno arreglo2[N]) { int i=0,j=0,k=0,maximo=0,bandera=1; t_alumno* lista=NULL; for(i=0;i<T;i++) { for(j=0;j<N;j++) { if(arreglo1[i].numero==arreglo2[j].numero) { bandera=0; } } if(bandera==1) { if(!esta(lista,arreglo1[i].numero)) { (lista+k)->numero=arreglo1[i].numero; k++; } } bandera=1; } /// Proceso Inverso for(i=0;i<N;i++) { for (j=0;j<T;j++) { if(arreglo2[i].numero==arreglo1[j].numero) { bandera=0; } } if(bandera==1) { (lista+k)->numero=arreglo2[i].numero; k++; } bandera=1; } (lista+k)->numero=0; return lista; } int esta (t_alumno*lista ,int numero) { int k=0; while((lista+k)!=NULL) { if((lista+k)->numero==numero) { return 1; } k++; } return 0; }