Challenge

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

Abhinaya mam

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

#include

#include

// Link list node

struct Node {

    int data;

    struct Node* next;

};

//function declaration

void push(struct Node** head_ref, int new_data);

int isPresent(struct Node* head, int data);

// Function to get union of two linked lists head1 and head2

struct Node* getUnion(struct Node* head1, struct Node* head2)

{

    struct Node* result = NULL;

    struct Node *t1 = head1, *t2 = head2;

    // Insert all elements of list1 to the result list

    while (t1 != NULL)

    {

        push(&result, t1->data);

        t1 = t1->next;

     }

    // Insert those elements of list2 which are not present in result list

    while (t2 != NULL)

    {

        if (!isPresent(result, t2->data))

        {

         push(&result, t2->data);

                  }

                     t2 = t2->next;

                  }

                  return result;

         }

              // Function to get intersection of two linked lists head1 and head2

     struct Node* getIntersection(struct Node* head1, struct Node* head2)

         {

             struct Node* result = NULL;

             struct Node* t1 = head1;

            // Traverse list1 and search each element of it in list2. If the element is present in list 2, then insert the element to result

                  while (t1 != NULL)

                  {

                      if (isPresent(head2, t1->data))

                      {

                          push(&result, t1->data);

                      }

                      t1 = t1->next;

                  }

                  return result;

              }

              // A utility function to insert a node at the beginning of a linked list

              void push(struct Node** head_ref, int new_data)

              {

                  // allocate node

                  struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));

                  // put in the data

                  new_node->data = new_data;

                  // link the old list off the new node

                  new_node->next = (*head_ref);

                  // move the head to point to the new node

                     (*head_ref) = new_node;

                 }

                 // function to print a linked list

                 void printList(struct Node* node)

                 {

                     while (node != NULL)

                     {

                         printf("%d ", node->data);

                         node = node->next;

                     }

                 }

                 // function that returns true if data is present in linked list else return false

                 int isPresent(struct Node* head, int data)

                 {

                     struct Node* t = head;

                     while (t != NULL)

                     {

                         if (t->data == data)

                         {

                             return 1;

                         }

                                 t = t->next;

                             }

                             return 0;

                         }

                         // Driver program to test above function

                         int main()

                         {

                             int n,m,temp;

                             printf("enter the value of number of value in link list(both):-");

                             fflush(stdout);

                             scanf("%d %d", &n, &m);

                             // Starth structure pointer with the empty list

                             struct Node* head1 = NULL;

                             struct Node* head2 = NULL;

                                 struct Node* intersecn = NULL;

                                 struct Node* unin = NULL;

                                 //for loop for link list1

                                 for(int i=0;i

                                 {

                                     printf("Enter the value in link list1 %d:-",i);

                                     fflush(stdout);

                                     scanf("%d", &temp);

                                     push(&head1, temp);

                                 }

                                //for loop for link list2

                                for(int i=0;i

                                {

                                    printf("Enter the value in link list2 %d:-",i);

                                     fflush(stdout);

                                     scanf("%d", &temp);

                                     push(&head2, temp);

                                }

                                //call the function of intersection

                                 intersecn = getIntersection(head1, head2);

                                 //call the function of union

                                 unin = getUnion(head1, head2);

                                 printf("\n First list is ");

                                 //function calling with structure pointer as argument

                                 printList(head1);

                                 printf("\n Second list is ");

                                 printList(head2);

                                 printf("\n Intersection list is ");

                                 printList(intersecn);

                                 printf("\n Union list is ");

                                    printList(unin);

                                    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.