Challenge

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

In this project we will observe the how the linked list works and how the function play an major role in the in linked list and how the function can be called in different function and how the data is stored and transferred from one list to another list.The project has 4 major parts insert,union,intersection,compare,display.The first part is how the data is stored in the list in which the last added word or data is first in the list and first enter data is stored in the last of the list.The union part is to combine the given lists and display the list called union list and common data is repeated only once.The intersection is where the common data in the list is stored and displayed.The compare is function is to compare the given lists and if there is commom data in gives lists.

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

typedef struct node//defining the structure
{
int data;//creating the data type of the variable
struct node *next;// creating self referential node
}
Node;//changing the structure name as node

static Node *head1,*head2,*head,*head_union,*head_intersection,*newnode,*tail,*res_union,*res_intersection;//declaring the different variable in structure type
/* Declaring diffferent function with the argumrnts*/

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);

void display_list(Node *head_ref)//function used to dispaly the nodes data .
{
if(head_ref == 0)
{
printf(" List is empty.");
}
else
{
tail = head_ref;//we are transfering address if the list to tail
while(tail != 0)
{
printf("%d ", tail->data);// prints the data of current node
tail = tail->next;// advances the position of current node
}
tail = newnode;
}
}

Node *insert_node(Node *head_ref,int n)//function used create the new list
{
printf("\nInserting Elements at the beginning...\n");
newnode =(Node*) malloc(sizeof(Node));//allocating the memory to the nodes
printf("Address of created newnode :%d\n",newnode);
newnode->data = n;//assigning the value to node
printf("Inserted value is :%d\n",newnode->data);
newnode->next = head_ref;//address of the pervious address is transfered to the new node
head_ref = newnode;//transfering the new address to the head ref for linking new node
return head_ref;
}

Node *get_union(Node *head_pointer1,Node *head_pointer2)//function used to union to list
{
while(head_pointer1 != 0)// 2 3 4 5
{
head_union = insert_node(head_union,head_pointer1->data);//here we are inserting the data of list 1 into the union function
head_pointer1 = head_pointer1->next;//we transverse the node using the address in next.

}
while(head_pointer2 != 0)// 3 4 5 6
{
if(!compare(head_union,head_pointer2->data))//Here we are insering the element from list 2 number where not in the in th list1 to the union
head_union = insert_node(head_union,head_pointer2->data);//inserting the element not in the list2
head_pointer2 = head_pointer2->next;//travelling to next node
}
return head_union;// 2 3 4 5 6
}

int compare(Node *head,int data)
{
while (head != NULL)
{ // 2
if (head->data == data)//comparing the data of list 2 with list 1
return 1;
head = head->next;
}
return 0;
}

Node *get_intersection(Node *head_pointer1,Node *head_pointer2)
{
while (head_pointer1 != 0)
{
if (compare(head_pointer2, head_pointer1->data))//we are comparing the both lsit for instersection
head_intersection = insert_node(head_intersection,head_pointer1->data);//transferring the that value to the intersection
head_pointer1 = head_pointer1->next;
}

return head_intersection;
}
int main()
{

int first_list_nodes = 0,second_list_nodes = 0,first_list_items = 0,
second_list_items = 0;
int f;
printf("Enter the number of Nodes in first List:");
fflush(stdout);
scanf("%d",&first_list_nodes);// 4( 2 3 4 5)
printf("Enter %d the elements:",first_list_nodes);//getting the number of element in the lists
for( f = 0;f < first_list_nodes;f++)
{
fflush(stdout);
scanf("%d",&first_list_items);//getting the data in run time
head1 = insert_node(head1,first_list_items);//inserting the data in list
}
display_list(head1);//displating the head1 list
printf("\nEnter the number of Nodes in second List:");
fflush(stdout);
scanf("%d",&second_list_nodes);
printf("Enter %d the elements:",second_list_nodes);
for(f = 0;f < second_list_nodes;f++)
{
fflush(stdout);
scanf("%d",&second_list_items);//getting the data in run time
head2 = insert_node(head2,second_list_items);
}
display_list(head2);//displating the head1 list
res_union = get_union(head1,head2);//transfering the result of union function to the res union
printf("Here is the result of union: ");
display_list(res_union);//transfring the values as argumnets to display function
res_intersection = get_intersection(head1,head2);//transfering the result of intersection function to the res intersection

printf("Here is the result of intersection: ");//transfering the result of intersection function to the res intersection
display_list(res_intersection);//transfring the values as argumnets to display function

}

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.