Challenge

Project 1 - 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:(5 to 6 lines)

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.

Goals (2 to 3 lines)

  • 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.

Key Highlights of project:(4 to 5 points)

  • 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.

Deliverables of this project: (4 to 5 points)

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

Expected Outcomes : (4 to 5 points)

  • 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.
/*
 * linklist.c
 *
 *  Created on: 18-Jun-2023
 *      Author: MD AKRAM
 */
 
#include                            //Header file
#include
#include
 
typedef struct node                          // defining the structure
{
int data;                                //creating data type of the variable
struct node *next;                        //creating self refrential node
 
}Node;                                        //changing the structure name as node
 
static Node *head1, *head2, *head_union, *head_intersection, *tail, *res_union, *res_intersection, *newnode;  //declaring the variable in structure type
 
/*declaring different function with the argument*/
 
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 display 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 uses to create the new list
{
printf("\nInserting element the beginning....\n ");
newnode =(Node *)malloc(sizeof(Node));                    //allocating the memory to the nodes
printf("Address of creating new node : %d\n",newnode);
newnode ->data = n;                                      //assigning the value of nodes
printf("inserting value is : %d\n",newnode->data);
newnode ->next = head_ref;              //address of the previous address is transfered to new nodes
head_ref = newnode;                     //transfering the new naddress 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)
{
head_union =insert_node(head_union,head_pointer1 ->data);  //Here we are inserting the data os list 1 into the union function
head_pointer1 = head_pointer1 -> next;                     //we transverse the node using the address in next
}
while(head_pointer2 != 0)
{
if(!compare(head_union,head_pointer2 -> data))     //Here we are insering the element from list 2 number
                                               //where not in the in the list 1 to the union
 
head_union = insert_node(head_union, head_pointer2 ->data);  //inserting the element not in the list 2
head_pointer2 = head_pointer2 ->next;                //jump to next node
 
}
return head_union;
}
 
int compare(Node *head,int data)
{
while (head != NULL)
{
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 list intersection
head_intersection = insert_node(head_intersection,head_pointer1 ->data); //transferring the thst 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);
printf("Enter %d the element : ",first_list_nodes);  //getting the number of element in the lists
for (f=0; f
{
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 head 1 list
printf("\n Enter the Number of Nodes in second list : ");
fflush(stdout);
scanf("%d",&second_list_nodes);
printf("Enter %d the element : ",second_list_nodes);
for (f=0; f
{
scanf("%d",&second_list_items);   //getting the data in run time
head2 = insert_node(head2,second_list_items);
}
display_list(head2);        //displating the head 2 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);           //transferring the values asargument 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 : "); //transferring the result of intersection function to the res intersection
display_list( res_intersection);     //transferring the values asargument to display function
}

Output:

Enter the number of nodes in first list: 4
7
3
6
7
Enter 4 the element :
Inserting element the beginning....
Address of creating new node : 13245888
inserting value is : 7

Inserting element the beginning....
Address of creating new node : 13245904
inserting value is : 3

Inserting element the beginning....
Address of creating new node : 13245920
inserting value is : 6

Inserting element the beginning....
Address of creating new node : 13245936
inserting value is : 7
7 6 3 7
Enter the Number of Nodes in second list : 3
5
6
7
Enter 3 the element :
Inserting element the beginning....
Address of creating new node : 13245952
inserting value is : 5

Inserting element the beginning....
Address of creating new node : 13246056
inserting value is : 6

Inserting element the beginning....
Address of creating new node : 13246072
inserting value is : 7
7 6 5
Inserting element the beginning....
Address of creating new node : 13246088
inserting value is : 7

Inserting element the beginning....
Address of creating new node : 13246104
inserting value is : 6

Inserting element the beginning....
Address of creating new node : 13246120
inserting value is : 3

Inserting element the beginning....
Address of creating new node : 13246136
inserting value is : 7

Inserting element the beginning....
Address of creating new node : 13246152
inserting value is : 5
Here is the result of union : 5 7 3 6 7
Inserting element the beginning....
Address of creating new node : 13246168
inserting value is : 7

Inserting element the beginning....
Address of creating new node : 13246184
inserting value is : 6

Inserting element the beginning....
Address of creating new node : 13246200
inserting value is : 7
Here is the result of intersection : 7 6 7

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.