Challenge

Project 1 - Creation of user defined data type to implement the user interfaces for working with ‘Set’ (Mathematical Set theory) using Linked List

#PROJECT 01

To create a user-defined data type for working with sets using linked lists, you would need to define a class for the set, and a class for the linked list nodes. The set class would have methods for adding and removing elements, as well as methods for performing set operations such as union and intersection. The linked list node class would have properties for the value of the node and a reference to the next node in the list. To implement the set as a linked list, each element in the set would be represented by a node in the list, with the head of the list representing the first element in the set.

/*
* Mathematical Set Theory.c
*
* Created on: 12-Jan-2023
* Author: night(Ambrose Joseph)
*/

#include
#include

// A structure of linked list node
struct node
{
int data;
struct node *next;

} *LLOne, *LLTwo, *unionLL, *intersectionLL;

void initialize()
{
LLOne = LLTwo = NULL;
}

//Inserting a node in front of a Singly linked list.
void insert(struct node **head, int num)
{
// Create a new Linked List node
struct node* newNode = (struct node*) malloc(sizeof(struct node));
newNode->data = num;
// Next pointer of new node will point to head node of linked list
newNode->next = *head;
//make new node as new head of linked list
*head = newNode;
}

// It will search an element in Linked List by linearly traversing from head to tail
int search(struct node *head, int num)

{
while (head != NULL)
{
if (head->data == num)
{
return 1;
}

head = head->next;
}
return 0;
}

//Returns the union of two given linked list
struct node* findunion(struct node *LLOne, struct node *LLTwo)
{
unionLL = NULL;
// Add all nodes of first Linked List to unionLL
struct node *temp = LLOne;
while(temp != NULL)
{
insert(&unionLL, temp->data);
temp = temp->next;
}
// Insert those nodes of LLTwo which is not present in LLOne
while(LLTwo != NULL)
{
if(!search(LLOne, LLTwo->data))
{
insert(&unionLL, LLTwo->data);
}
LLTwo = LLTwo->next;
}
return unionLL;
}


//Returns the Linked List which contains common nodes of two given linked list
struct node* intersection(struct node *LLOne, struct node *LLTwo)
{
intersectionLL = NULL;
//Search every element of LLOne in LLTwo, If found then add it to intersection List
while(LLOne != NULL)
{
if(search(LLTwo, LLOne->data))
{
insert(&intersectionLL, LLOne->data);
}
LLOne = LLOne->next;
}
return intersectionLL;
}

//Prints a linked list from head node till tail node
void printLinkedList(struct node *nodePtr)
{
while (nodePtr != NULL)
{
printf("%d", nodePtr->data);
nodePtr = nodePtr->next;
if(nodePtr != NULL)
printf("-->");
}
}

int main() //main Function....
{
int i, LLOneCount, LLTwoCount, temp;
initialize();

//Creating First linked List
printf("Enter number of nodes in first Linked List: n");
fflush(stdout);
scanf("%d", &LLOneCount);

printf("Enter %d integers: n", LLOneCount);
fflush(stdout);

for(i=0; i<LLOneCount; i++)
{
scanf("%d", &temp);
insert(&LLOne, temp);
}

printLinkedList(LLOne);

printf("nEnter number of nodes in second Linked List: n");
fflush(stdout);
scanf("%d", &LLTwoCount);

printf("Enter %d integers: n", LLTwoCount);
fflush(stdout);

for(i=0; i<LLTwoCount; i++)

{
scanf("%d", &temp);
insert(&LLTwo, temp);
}

printLinkedList(LLTwo);

//Printing Union of two given linked list
findunion(LLOne, LLTwo);
intersection(LLOne, LLTwo);

printf("nUnion Linked List: n");
fflush(stdout);
printLinkedList(unionLL);

printf("nIntersection Linked List: n");
fflush(stdout);
printLinkedList(intersectionLL);

return 0;
}

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.