Sei sulla pagina 1di 3

#include stdio.

h
#include stdlib.h

typedef struct lista {


int valor;
struct lista sgte;
}TipoConjunto;

PRIMITIVAS

void crearConj(TipoConjunto conj) {


conj=NULL;
}

bool vacioConj(TipoConjunto conj) {


if (conj==NULL)
return true;
else
return false;
}

void adicionarConj(TipoConjunto conj, int valor) {


TipoConjunto p;
p=(TipoConjunto )malloc(sizeof(TipoConjunto));
p-valor=valor;
p-sgte=conj;
conj=p;
}

int eliminarConj(TipoConjunto conj) {


TipoConjunto p;
int valor;
if (!vacioConj(conj)) {
p=conj;
valor=p-valor;
conj=(conj)-sgte;
free(p);
return valor;
}
else
return -1;
}

bool perteneceConj(TipoConjunto conj, int valor) {


TipoConjunto p;
p=conj;
while (p!=NULL) {
if (p-valor==valor)
return true;
p=p-sgte;
}
return false;
}

void mostrar(TipoConjunto conj) {


TipoConjunto aux;
int valor;
crearConj(&aux);
printf(nContenido del conjunton);
while (!vacioConj(conj)) {
valor=eliminarConj(conj);
printf(%d ,valor);
adicionarConj(&aux,valor);
}
while (!vacioConj(aux)) {
valor=eliminarConj(&aux);
adicionarConj(conj,valor);
}
}

void unionConjuntos(TipoConjunto c1, TipoConjunto c2, TipoConjunto c3) {


int valor;
TipoConjunto temp;
crearConj(c3);
crearConj(&temp);
while (!vacioConj(c1)) {
valor=eliminarConj(c1);
if (!perteneceConj(c3,valor))
adicionarConj(c3,valor);
adicionarConj(&temp,valor);
}
while (!vacioConj(temp))
adicionarConj(c1,eliminarConj(&temp));

crearConj(&temp);
while (!vacioConj(c2)) {
valor=eliminarConj(c2);
if (!perteneceConj(c3,valor))
adicionarConj(c3,valor);
adicionarConj(&temp,valor);
}
while (!vacioConj(temp))
adicionarConj(c2,eliminarConj(&temp));
}

void interseccionConjuntos(TipoConjunto c1, TipoConjunto c2, TipoConjunto c3) {


int valor;
TipoConjunto temp;
crearConj(c3);
crearConj(&temp);
while (!vacioConj(c1)) {
valor=eliminarConj(c1);
if (perteneceConj(c2,valor) && !perteneceConj(c3,valor))
adicionarConj(c3,valor);
adicionarConj(&temp,valor);
}
while (!vacioConj(temp))
adicionarConj(c1,eliminarConj(&temp));
}

int contarConj(TipoConjunto conj) {


if (vacioConj(conj))
return 0;
else {
eliminarConj(conj);
return 1+contarConj(conj);
}
}

int main(void) {
TipoConjunto a,b,c;
crearConj(&a);
crearConj(&b);
crearConj(&c);
for (int x=1;x10;x++)
adicionarConj(&a,x);
for (int x=1;x15;x++)
adicionarConj(&b,x);
mostrar(&a);
mostrar(&b);
unionConjuntos(&a,&b,&c);
mostrar(&a);
mostrar(&b);
printf(nnUnionn);
mostrar(&c);
interseccionConjuntos(&a,&b,&c);
printf(nnInterseccionn);
mostrar(&c);
printf(nEl conjunto tenia %d,contarConj(&c));
mostrar(&c);
getchar();

Potrebbero piacerti anche