Challenge

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

struct node                            /* A structure of linked list node */
{
        int data;
        struct node *next;
} *head1, *head2, *unionLL, *intersectionLL;

void initialize()
{
         head1 = head2 = 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 *head1, struct node *head2)
{
         unionLL = NULL;                        /* Add all nodes of first Linked List to unionLL */
         struct node *temp = head1;
         while(temp != NULL)
         {
                 insert(&unionLL, temp->data);
                 temp = temp->next;
          }

          while(head2 != NULL)                 /* Insert those nodes of head2 which is not present in head1 */
          {
                if(!search(head1, head2->data))
                {
                       insert(&unionLL, head2->data);
                }
                head2 = head2->next;
          }
          return unionLL;
}
/* Returns the Linked List which contains common nodes of two given linked list */
struct node* intersection(struct node *head1, struct node *head2)         /* Search every element of head1 in head2,
                                                                                                                If found then add it to intersection List */
{
                                                                                                           // intersectionLL = NULL;

           while(head1 != NULL)

           {
                     if(search(head2, head1->data))
                     {
                            insert(&intersectionLL, head1->data);
                      }
                      head1 = head1->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, head1Count, head2Count, temp;
          initialize();                                                                    /* Creating First linked List*/
          printf("Enter number of nodes in first Linked List\n");
          fflush(stdout);
          scanf(" %d", &head1Count);
          fflush(stdout);
          printf("Enter %d integers\n", head1Count);

          for(i=0; i          {
                   scanf("%d", &temp);
                   insert(&head1, temp);
           }
           printLinkedList(head1);
           printf("\nEnter number of nodes in second Linked List\n");
           fflush(stdout);
           scanf("%d", &head2Count);
           fflush(stdout);
           printf("Enter %d integers\n", head2Count);
           for(i=0; i           {
                 scanf("%d", &temp);
                 insert(&head2, temp);
            }
            printLinkedList(head2);                  /* printing Union of two given linked list */
            findunion(head2, head1);
            intersection(head1, head2);
            printf("\nUnion Linked List\n");
            fflush(stdout);
            printLinkedList(unionLL);
            printf("\nIntersection Linked List\n");
            fflush(stdout);
           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.