Challenge

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

AIM: 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.

PROGRAMMING:

#include
#include

struct node// A structure of linked list node

{
     int data;
     struct node *next;


} *LLOne, *LLTwo, *unionLL, *intersectionLL;

void initialize()

{
      LLOne = LLTwo = 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 *LLOne, struct node *LLTwo)

{
    unionLL = NULL;
    // Add all nodes of first Linked List to unionLL
    struct node *temp = LLOne; 
    while(temp != NULL)

   {
        insert(&unionLL, temp->data);
        temp = temp->next;
    }
// Insert those nodes of LLTwo which is not present in LLOne
   while(LLTwo != NULL)

  {
      if(!search(LLOne, LLTwo->data))

        {
             insert(&unionLL, LLTwo->data);
         } 
         LLTwo = LLTwo->next;
   }
  return unionLL;
}


//Returns the Linked List which contains common nodes of two given linked list

struct node* intersection(struct node *LLOne, struct node *LLTwo)

{
     intersectionLL = NULL;
     //Search every element of LLOne in LLTwo, If found then add it to intersection List
     while(LLOne != NULL)

   {
         if(search(LLTwo, LLOne->data))

        {
            insert(&intersectionLL, LLOne->data);
         }
         LLOne = LLOne->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, LLOneCount, LLTwoCount, temp;
    initialize();
    //Creating First linked List
    printf("Enter number of nodes in first Linked List\n");
    scanf("%d", &LLOneCount);
    printf("Enter %d integers\n", LLOneCount);
    for(i=0; i

    {
        scanf("%d", &temp);
        insert(&LLOne, temp);
     }
      printLinkedList(LLOne);
      printf("\nEnter number of nodes in second Linked List\n");
      scanf("%d", &LLTwoCount);
      printf("Enter %d integers\n", LLTwoCount);
      for(i=0; i

      {
         scanf("%d", &temp);
         insert(&LLTwo, temp);
       }
      printLinkedList(LLTwo);
      //printing Union of two given linked list
      findunion(LLOne, LLTwo);
      intersection(LLOne, LLTwo);
      printf("\nUnion Linked List\n");
      printLinkedList(unionLL);
      printf("\nIntersection Linked List\n");
      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.