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-1

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

Overview of the Project:

In this project, interfaces for mathematical Set Theory are implemented using C programming language. I give the input like two list of data and this program will give the output as the union and intersection of these two lists

Goals

  • Implementation of interface for mathematical Set Theory using C programming.
  • Giving two list of data as input to get the output as union & intersection for given list of data.

Key Highlights of the Project:

  • Creating two list of data using linked list method.
  • Insert the node to 1st and 2nd list accordingly.
  • Intersection of data of two lists.
  • Getting Union of two list.

Deliverables of this project:

  • Intersection of data of two list.
  • Union of data of two list

Expected Outcomes:

  • Student will get the Knowledge of creating the nodes using Linked List.
  • Getting the intersection and Union of data of two list.
  • Comparing the elements of two list.

program code:

#include <stdio.h>

#include <stdlib.h>

// A structure of linked list node

struct node

{

int data;

struct node *link;

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

void initialize()

{

LLOne = LLTwo = NULL;

}

//Given a Inserts 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;

// Link pointer of new node will point to head node of linked list

newNode->link = *head;

//make new node as new head of linked list

*head = newNode;

}

// Searches 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->link;

}

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->link;

}

// 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->link;

}

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->link;

}

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->link;

if(nodePtr != NULL)

printf("-->");

}

}

int main()

{

int i, LLOneCount, LLTwoCount, temp;

initialize();

//Creating First linked List

printf("Enter number of nodes in first Linked List\n");

scanf("%d", &LLOneCount);

printf("Enter %d integers\n", LLOneCount);

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

{

scanf("%d", &temp);

insert(&LLOne, temp);

}

printLinkedList(LLOne);

printf("\nEnter number of nodes in second Linked List\n");

scanf("%d", &LLTwoCount);

printf("Enter %d integers\n", LLTwoCount);

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

{

scanf("%d", &temp);

insert(&LLTwo, temp);

}

printLinkedList(LLTwo);

findunion(LLOne, LLTwo);

intersection(LLOne, LLTwo);

printf("\nUnion Linked List\n");

printLinkedList(unionLL);

printf("\nIntersection Linked List\n");

printLinkedList(intersectionLL);

return 0;

}

output:

Enter number of nodes in first linked list

4

Enter 4 integers

3

4

5

66

66-->5-->4-->3

Enter number of nodes in first linked list

5

Enter 5 integers

6

77

7

66

4

4-->66-->7-->77-->6

Union linked list

6-->77-->7-->3-->4-->5-->6

Intersection linked list

4-->66

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.