Challenge

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

Aim:

To create a C program for 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. 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

1.here we taken by the two set of the data list 1={7 1 6 3 },list 2={1 8 9 5}.

2.after that we can apply the union and intersection of these data list 1, list2.

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.

3.Union means it will store the all data in the same location.

Node *get_union(Node *head_pointer1,Node *head_pointer2)

4.Intersection means A set that consists of elements common will present in A and B.

Node *get_intersection(Node *head_pointer1,Node*head_pointer2)

Key highlits 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.

1.we have taking two different data nodes A and B.

2.after we are perfroming the union,intersection and compare.

Node *insert_node(Node *head_ref,int n);
void display_list(Node *head_ref);
Node *get_union(Node *head_pointer1,Node *head_pointer2);
Node *get_intersection(Node *head_pointer1,Node *head_pointer2);
int compare(Node *head,int data);

Deliverables of this project:

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

Intersection means nothing it will perfroming the two sets of the data by user give in the console of the inputs and after it will be perfroming to check the data by value by value .

ex: list 1={7 1 6 3}

after intersection final is: list 1={ 3 6 1 7}

union means it will store the data in same memory location,a sets of data will be presented in the partucular location.

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.

A after creating the 2 nodes in the linked list .we are perfroming the intersection and union of those A and B.After that we have to do Compare of both nodes

here list 1={7 1 6 3 },list 2={ 1 8 9 5}

after intersection list 1={3 6 1 7},list 2 ={5 9 8 }

after compare ={1}

Program:

// C program to find union
// and intersection of two
// linked lists

#include <stdbool.h>//library for boolean operation of boolean datatype
#include <stdio.h>//standard i/o header file
#include <stdlib.h>//The stdlib.h header defines four variable types,
//several macros, and various functions for performing general functions.

/* Link list node */
struct Node {
int data;
struct Node* next;


};

/* function to insert a
node at the beginning of a linked list*/
void push(struct Node** head_ref, int new_data);

/* function to check if
given data is present in a list */
bool 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;
}

/* A utility function to print a linked list*/
void printList(struct Node* node)
{
while (node != NULL)
{
printf("%d ", node->data);
node = node->next;
}
}

/* A utility function that returns true if data is
present in linked list else return false */
bool isPresent(struct Node* head, int data)
{
struct Node* t = head;
while (t != NULL)
{
if (t->data == data)
return 1;
t = t->next;
}
return 0;
}

/* program to run above function*/
int main()
{
int a,b,c,d,w,x,y,z;
/* Start with the empty list */
struct Node* head1 = NULL;
struct Node* head2 = NULL;
struct Node* intersecn = NULL;
struct Node* unin = NULL;

printf("Enter the 4 elements for the 1st array");
//Asking the elements
fflush(stdout);
//input the elements by the user
scanf("\n%d",&a);
scanf("\n%d",&b);
scanf("\n%d",&c);
scanf("\n%d",&d);

printf("Enter the 4 elements for the 2nd array");
//Asking the elements
fflush(stdout);
//input the elements by the user
scanf("\n%d",&w);
scanf("\n%d",&x);
scanf("\n%d",&y);
scanf("\n%d",&z);
/*create a linked lists with the input data */
push(&head1, a);
push(&head1, b);
push(&head1, c);
push(&head1, d);

/*create a linked lists with the input data*/
push(&head2, w);
push(&head2, x);
push(&head2, y);
push(&head2, z);

intersecn = getIntersection(head1, head2);
unin = getUnion(head1, head2);

printf("\n First list is \n");
printList(head1);

printf("\n Second list is \n");
printList(head2);

printf("\n Intersection list is \n");
printList(intersecn);

printf("\n Union list is \n");
printList(unin);

return 0;
}

Output:

Result:

The expected output is obtained for the C program for Creation of user defined data type to implement the user interfaces for working with ‘Set’ .

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.