/** * Conjuntos de enteros (enteros entre 0 y 31) implementados * sobre los bits de un dato tipo int. * @author Kester Habermman. kester@linuxtag.org. 2004 */ #include #include "conjuntos.h" conjunto insertar(conjunto A, entero e) { return A | ( 1 << e ); } conjunto eliminar(conjunto A, entero e) { return A & ~( 1 << e ); } boolean miembro(conjunto A, entero e) { return A & (1 << e ); } entero tamano(conjunto A) { entero i, n; n = 0; for (i = MIN; i <= MAX; i++) if (miembro(A, i)) n++; return n; } conjunto union2(conjunto A, conjunto B) { return A | B; } conjunto interseccion(conjunto A, conjunto B) { return A & B; } conjunto diferencia(conjunto A, conjunto B) { return A - interseccion(A, B); } void imprimir(conjunto A) { entero i; printf("{ "); for (i = MIN; i <= MAX; i++) if (miembro(A, i)) printf("%d ", i); printf("}\n"); }