Project 1 - Creation of user defined data type to implement the user interfaces for working with ‘Set’ (Mathematical Set theory) using Linked List
#include
#include
#define MAX_SIZE 100
// Structure to hold a set
typedef struct {
int elements[MAX_SIZE];
int size;
} Set;
// Function prototypes
Set unionSet(const Set *set1, const Set *set2);
Set intersectSet(const Set *set1, const Set *set2);
void inputSet(Set *set);
void printSet(const Set *set);
int main() {
Set set1, set2, unionSetResult, intersectSetResult;
printf("Enter elements of first set (enter -1 to stop):\n");
inputSet(&set1);
printf("Enter elements of second set (enter -1 to stop):\n");
inputSet(&set2);
unionSetResult = unionSet(&set1, &set2);
intersectSetResult = intersectSet(&set1, &set2);
printf("\nUnion of the two sets:\n");
printSet(&unionSetResult);
printf("\nIntersection of the two sets:\n");
printSet(&intersectSetResult);
return 0;
}
// Function to compute the union of two sets
Set unionSet(const Set *set1, const Set *set2) {
Set resultSet = {{0}, 0};
int i;
for (i = 0; i < set1->size; ++i) {
resultSet.elements[i] = set1->elements[i];
resultSet.size++;
}
for (i = 0; i < set2->size; ++i) {
int exists = 0, j;
for (j = 0; j < resultSet.size; ++j) {
if (set2->elements[i] == resultSet.elements[j]) {
exists = 1;
break;
}
}
if (!exists) {
resultSet.elements[resultSet.size] = set2->elements[i];
resultSet.size++;
}
}
return resultSet;
}
// Function to compute the intersection of two sets
Set intersectSet(const Set *set1, const Set *set2) {
Set resultSet = {{0}, 0};
int i, j;
for (i = 0; i < set1->size; ++i) {
for (j = 0; j < set2->size; ++j) {
if (set1->elements[i] == set2->elements[j]) {
resultSet.elements[resultSet.size] = set1->elements[i];
resultSet.size++;
break;
}
}
}
return resultSet;
}
// Function to take input for a set from user
void inputSet(Set *set) {
set->size = 0;
int element;
do {
scanf("%d", &element);
if (element != -1) {
set->elements[set->size] = element;
set->size++;
}
} while (element != -1 && set->size < MAX_SIZE);
}
// Function to print elements of a set
void printSet(const Set *set) {
if (set->size == 0) {
printf("Empty set\n");
} else {
int i;
printf("{ ");
for (i = 0; i < set->size; ++i) {
printf("%d ", set->elements[i]);
}
printf("}\n");
}
}