Challenge

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

Project 1:-

#include<stdbool.h> //preprocessor directive

#include<stdio.h> //preprocessor directive for calling an a standard library functions

#include<stdlib.h> //preprocessor directive for an standard boolean expression

//Link list node

struct Node {

int data; //the data called in the form an int data type

struct Node* next; //pointer next node valueis stored in an struct data type

};

//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 lists 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

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 begining 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); //print the node as data

node=node->next;

}

}

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

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):-"); //console input output statement

fflush(stdout); //to find the bug or to clear the error

scanf("%d%d", &n, &m); //console input output statement

//Starth structure pointer with the empty list

struct Node* head1=NULL; //structure node for head1

struct Node* head2=NULL; //structure node for head2

struct Node* intersecn=NULL; //structure node for intersection

struct Node* unin=NULL; //structure node for union

//for loop for link list1

for(int i=0;i<n;i++) //here loop got executed

{

printf("Enter the value in link list1 %d:-",i); //console input output statement

fflush(stdout); //to find the bug or to clear the error

scanf("%d", &temp); //console input output statement

push(&head1, temp);

}

//for loop for link list2

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

{

printf("Enter the value in link list2 %d:-",i); //console input output statement

fflush(stdout); //to find the bug or to clear the error

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:

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

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.