Challenge

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

Embedded c - Offline batch 2 - Kirubhakaran

#include
#include//preprocessors

typedef struct node
{
    int data;
    struct node *next;
}Node;//creating a node

Node* insert_list(Node *head_ref,int data);
void display_list(Node *head_ref);
void union_node(Node *head1_ref,Node *head2_ref);
void intersec_node(Node *head1_ref,Node *head2_ref);
int compare(Node *head_ref,int dada);//sub function declaration

static Node *head1, *head2, *union_list, *intersec, *tail, *newnode, *nextnode;//declaring structure variable globally

int main()//main function
{
int node_nos=0, node_tems=0, del_node=0, data;//local variable declaration

printf("\nEnter the number of nodes in linked list 1: ");
scanf("%d",&node_nos);//input from user for no.of nodes in linked list1

printf("\n");

for(int i=1;i<=node_nos;i++)
{
    printf("Enter %d node data : ",i);
    scanf("%d",&data);
    head1 = insert_list(head1,data);
}//get items of list1 from user

printf("\nEnter the number of nodes in linked list 2: ");
scanf("%d",&node_nos);//input from user for no.of nodes in linked list2

printf("\n");

for(int i=1;i<=node_nos;i++)
{
    printf("Enter %d node data : ",i);
    scanf("%d",&data);
    head2 = insert_list(head2,data);
}//get items of list2 from user

printf("\nLinked List 1 : \n");

display_list(head1);//display list 1

printf("\nLinked List 2 : \n");

display_list(head2);//display list 2

printf("\nUnion of lists : \n");

union_node(head1,head2);//calling union sub function

display_list(union_list);//display union of lists

printf("\nIntersection of lists : \n");

intersec_node(head1,head2);//calling intersection sub function

display_list(intersec);//display intersection of list

}

Node* insert_list(Node *head_ref,int data)     //function to insert a node.
{
    nextnode = head_ref;
    newnode =(Node*) malloc(sizeof(Node)); //create new node
    newnode->data = data;
    newnode->next = nextnode;//insert the new node
    nextnode = newnode;
    return nextnode;
}

void display_list(Node *head_ref)   //sub function to display the node in the list.
{
    printf("\n");
    if(head_ref == 0)
        printf("List is empty");
    else
    {
        tail =  head_ref;
        while(tail != 0)
        {
            printf(" -> %d",tail->data);//prints each data one by one in loop
            tail = tail->next;
        }
    }
    printf("\n");
}

void union_node(Node *head1_ref,Node *head2_ref)//union of list function
{
    while(head1_ref != NULL)
    {
        union_list = insert_list(union_list,head1_ref->data);
        head1_ref = head1_ref->next;
    }//copy the list1 data to union list

    while(head2_ref != NULL)
    {
        if(!compare(union_list,head2_ref->data))
            union_list = insert_list(union_list,head2_ref->data);

        head2_ref = head2_ref->next;
    }//check the data of union list with list two if not equal insert that in union list
}

void intersec_node(Node *head1_ref,Node *head2_ref)//intersection of lists function
{
    while(head2_ref != NULL)
    {
        if(compare(head1_ref,head2_ref->data))
            intersec = insert_list(intersec,head2_ref->data);

        head2_ref = head2_ref->next;
    }//check the data of two lists if its equal insert the data to intersection list
}

int compare(Node *head_ref,int key)//sub function used to compare in union and intersection
{
    Node *cmpr = head_ref;

    while( cmpr != NULL)
    {
        if(cmpr->data == key)//compares the data in the given list with the given key
            return 1;
        cmpr = cmpr->next;
    }
    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.