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.