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

Creation of user defined data type to implement the user interfaces for working with ‘Set’ (Mathematical Set theory)

Overview of the Project: (5 to 6 lines)

In this project, interfaces for mathematical Set Theory are implemented using C programming language. User can 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 (2 to 3 points)

  • 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: (4 to 5 point)

  • 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: (4 to 5 points)

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

Expected Outcomes: (4 to 5 points)

  • 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.

Answer :

Overview of the Project

In this project, interfaces for mathematical Set Theory are implemented using the C programming language. Users can provide input in the form of two lists of data, and the program will output the union and intersection of these two lists.

Key Features

Input Handling: Accepts two lists of data from the user.

Set Operations: Computes the union and intersection of the provided lists.

Output: Displays the results of the union and intersection operations.

Example

Input: List 1: {1, 2, 3}, List 2: {3, 4, 5}

Output: Union: {1, 2, 3, 4, 5}, Intersection: {3}

This project demonstrates fundamental set operations using C programming, providing a practical application of mathematical Set Theory concepts.

Goal :

This project aims to implement an interface for mathematical Set Theory using the C programming language. Users will input two lists of data, and the program will compute and output the union and intersection of these lists.

Key Highlights of the Project:

Mathematical Set Theory Implementation: Development of interfaces to perform fundamental set operations.

C Programming Language: Utilizes C for efficient and low-level manipulation of data.

User-Friendly Input: Allows users to input two lists of data for processing.

Set Operations: Computes and displays the union and intersection of the input lists.

Efficient Algorithms: Employs efficient algorithms to handle set operations, ensuring optimal performance.

Deliverables of this project:

· Intersection of Data from Two Lists: The program will compute and display the intersection of the two input lists, showing common elements.

· Union of Data from Two Lists: The program will compute and display the union of the two input lists, combining all unique elements.

· User Input Interface: An interface for users to input two lists of data for processing.

· Documentation: Detailed documentation explaining the usage of the program, the underlying algorithms, and how to compile and run the code.

· Source Code: Complete and well-commented C source code implementing the set operations and user input handling.

Expected Outcomes:

· Node Creation with Linked Lists: Students will learn how to create and manage nodes using linked lists in C.

· Intersection and Union Computation: Students will understand and implement algorithms to compute the intersection and union of two lists.

C Code :

#include <stdbool.h>

#include <stdio.h>

#include <stdlib.h>

// Link list node

struct Node {

int data;

struct Node* next;

};

//function declaration

void push(struct Node** head_ref, int new_data);

int isPresent(struct Node* head, int data);

// Function to get union of two linked lists head1 and head2

struct Node* getUnion(struct Node* head1, struct Node* head2)

{

struct Node* result = NULL;

struct Node *t1 = head1, *t2 = head2;

// Insert all elements of list1 to the result list

while (t1 != NULL)

{

push(&result, t1->data);

t1 = t1->next;

}

// Insert those elements of list2 which are not present in result list

while (t2 != NULL)

{

if (!isPresent(result, t2->data))

{

push(&result, t2->data);

}

t2 = t2->next;

}

return result;

}

// Function to get intersection of two linked lists head1 and head2

struct Node* getIntersection(struct Node* head1, struct Node* head2)

{

struct Node* result = NULL;

struct Node* t1 = head1;

// Traverse list1 and search each element of it in list2. If the element is present in list 2, then insert the element to result

while (t1 != NULL)

{

if (isPresent(head2, t1->data))

{

push(&result, t1->data);

}

t1 = t1->next;

}

return result;

}

// A utility function to insert a node at the beginning of a linked list

void push(struct Node** head_ref, int new_data)

{

// allocate node

struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));

// put in the data

new_node->data = new_data;

// link the old list off the new node

new_node->next = (*head_ref);

// move the head to point to the new node

(*head_ref) = new_node;

}

// function to print a linked list

void printList(struct Node* node)

{

while (node != NULL)

{

printf("%d ", node->data);

node = node->next;

}

}

// function that returns true if data is present in linked list else return false

int isPresent(struct Node* head, int data)

{

struct Node* t = head;

while (t != NULL)

{

if (t->data == data)

{

return 1;

}

t = t->next;

}

return 0;

}

// Driver program to test above function

int main()

{

int n,m,temp;

printf("enter the value of number of value in link list(both):-");

fflush(stdout);

scanf("%d %d", &n, &m);

// Starth structure pointer with the empty list

struct Node* head1 = NULL;

struct Node* head2 = NULL;

struct Node* intersecn = NULL;

struct Node* unin = NULL;

//for loop for link list1

for(int i=0;i<n;i++)

{

printf("Enter the value in link list1 %d:-",i);

fflush(stdout);

scanf("%d", &temp);

push(&head1, temp);

}

//for loop for link list2

for(int i=0;i<m;i++)

{

printf("Enter the value in link list2 %d:-",i);

fflush(stdout);

scanf("%d", &temp);

push(&head2, temp);

}

//call the function of intersection

intersecn = getIntersection(head1, head2);

//call the function of union

unin = getUnion(head1, head2);

printf("\n First list is ");

//function calling with structure pointer as argument

printList(head1);

printf("\n Second list is ");

printList(head2);

printf("\n Intersection list is ");

printList(intersecn);

printf("\n Union list is ");

printList(unin);

return 0;

}

Output 1

enter the value of number of value in link list(both):-2 3

Enter the value in link list1 0:-3

Enter the value in link list1 1:-4

Enter the value in link list2 0:-5

Enter the value in link list2 1:-6

Enter the value in link list2 2:-7

First list is 4 3

Second list is 7 6 5

Intersection list is

Union list is 5 6 7 3 4

Output 2

enter the value of number of value in link list(both):-2 3

Enter the value in link list1 0:-3

Enter the value in link list1 1:-4

Enter the value in link list2 0:-5

Enter the value in link list2 1:-4

Enter the value in link list2 2:-5

First list is 4 3

Second list is 5 4 5

Intersection list is 4

Union list is 5 3 4

for more detail pls find attached .c file or .rar file.

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.