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

  • 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 the Project: (4 to 5 point)

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

#include

#include

#include

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 :%p\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

}

printf("The first list elements are  ");

display_list(head1);//displating the head1 list

printf("\n\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);

}

printf("The second list elements are  ");

display_list(head2);//displating the head2 list

res_union = get_union(head1,head2);//transfering the result of union function to the res union

printf("\n\nHere 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("\n\nHere 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

}

OUTPUT

Enter the number of Nodes in first List:6

Enter 6 the elements:90

81

45

63

72

55

The first list elements are  55 72 63 45 81 90 

Enter the number of Nodes in second List:8

Enter 8 the elements:31

90

62

55

83

97

12

68

The second list elements are  68 12 97 83 55 62 90 31 

Here is the result of union       : 31 62 83 97 12 68 90 81 45 63 72 55 

Here is the result of intersection: 90 55 

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.