Challenge

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

Live Batch- student

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

Explaination -

#include <stdio.h>
#include <stdlib.h>

/* A structure of linked list node */
struct node {
int data;
struct node *next;
} *Linkedlist1, *Linkedlist2, *unionLL, *intersectionLL;

void initialize(){
Linkedlist1 = Linkedlist2 = 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;
/* Next pointer of new node will point to head node of linked list */
newNode->next = *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->next;
}
return 0;
}

/*
Returns the union of two given linked list
*/
struct node* findunion(struct node *Linkedlist1, struct node *Linkedlist2) {
unionLL = NULL;
/* Add all nodes of first Linked List to unionLL */
struct node *temp = Linkedlist1;
while(temp != NULL){
insert(&unionLL, temp->data);
temp = temp->next;
}
/* Insert those nodes of Linkedlist2 which is not present in Linkedlist1 */
while(Linkedlist2 != NULL){
if(!search(Linkedlist1, Linkedlist2->data)){
insert(&unionLL, Linkedlist2->data);
}
Linkedlist2 = Linkedlist2->next;
}
return unionLL;
}
/*
Returns the Linked List which contains common nodes of two given linked list
*/
struct node* intersection(struct node *Linkedlist1, struct node *Linkedlist2) {
intersectionLL = NULL;
/* Search every element of Linkedlist1 in Linkedlist2,
If found then add it to intersection List */
while(Linkedlist1 != NULL){
if(search(Linkedlist2, Linkedlist1->data)){
insert(&intersectionLL, Linkedlist1->data);
}
Linkedlist1 = Linkedlist1->next;
}
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->next;
if(nodePtr != NULL)
printf("-->");
}
}

int main() {
int i, Linkedlist1Count, Linkedlist2Count, temp;
initialize();
/* Creating First linked List*/
printf("Enter number of nodes in first Linked List\n");
scanf("%d", &Linkedlist1Count);
printf("Enter %d integers\n", Linkedlist1Count);
for(i=0; i<Linkedlist1Count; i++){
scanf("%d", &temp);
insert(&Linkedlist1, temp);
}
printLinkedList(Linkedlist1);
printf("\nEnter number of nodes in second Linked List\n");
scanf("%d", &Linkedlist2Count);
printf("Enter %d integers\n", Linkedlist2Count);
for(i=0; i<Linkedlist2Count; i++){
scanf("%d", &temp);
insert(&Linkedlist2, temp);
}
printLinkedList(Linkedlist2);
/* printing Union of two given linked list */
findunion(Linkedlist1, Linkedlist2);
intersection(Linkedlist1, Linkedlist2);
printf("\nUnion Linked List\n");
printLinkedList(unionLL);
printf("\nIntersection Linked List\n");
printLinkedList(intersectionLL);

return 0;
}

Output

5
12
13
14
15

17
5
65
32
12
14
15
Enter number of nodes in first Linked List
Enter 5 integers
17-->15-->14-->13-->12
Enter number of nodes in second Linked List
Enter 5 integers
15-->14-->12-->32-->65
Union Linked List
65-->32-->12-->13-->14-->15-->17
Intersection Linked List
12-->14-->15

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.