Challenge

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

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

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

void initialize()
{
head1 = head2 = 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 *head1, struct node *head2)
{
unionLL = NULL; /* Add all nodes of first Linked List to unionLL */
struct node *temp = head1;
while(temp != NULL)
{
insert(&unionLL, temp->data);
temp = temp->next;
}

while(head2 != NULL) /* Insert those nodes of head2 which is not present in head1 */
{
if(!search(head1, head2->data))
{
insert(&unionLL, head2->data);
}
head2 = head2->next;
}
return unionLL;
}
/* Returns the Linked List which contains common nodes of two given linked list */
struct node* intersection(struct node *head1, struct node *head2) /* Search every element of head1 in head2,
If found then add it to intersection List */
{
// intersectionLL = NULL;

while(head1 != NULL)

{
if(search(head2, head1->data))
{
insert(&intersectionLL, head1->data);
}
head1 = head1->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, head1Count, head2Count, temp;
initialize(); /* Creating First linked List*/
printf("Enter number of nodes in first Linked List\n");
fflush(stdout);
scanf(" %d", &head1Count);
fflush(stdout);
printf("Enter %d integers\n", head1Count);

for(i=0; i<head1Count; i++)
{
scanf("%d", &temp);
insert(&head1, temp);
}
printLinkedList(head1);
printf("\nEnter number of nodes in second Linked List\n");
fflush(stdout);
scanf("%d", &head2Count);
fflush(stdout);
printf("Enter %d integers\n", head2Count);
for(i=0; i<head2Count; i++)
{
scanf("%d", &temp);
insert(&head2, temp);
}
printLinkedList(head2); /* printing Union of two given linked list */
findunion(head2, head1);
intersection(head1, head2);
printf("\nUnion Linked List\n");
fflush(stdout);
printLinkedList(unionLL);
printf("\nIntersection Linked List\n");
fflush(stdout);
printLinkedList(intersectionLL);

return 0;
}

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.