Featured post

-Write C program to find even and odd number using macro

-Write C program to find even and odd number using macro #include<stdio.h> #define number(n)((n%2==0)?1:0) int main() { int num; printf("enter any number"); scanf("%d",&num); if(number(num)) printf("number is even"); else printf("number is odd"); return 0; } ***************************Output*********************** amr@amrj-virtual-machine:~$ gccevenodd.c amr@samr-virtual-machine:~$ ./a.out enter any number 2 number is evensmj@amr-virtual-machine:~$

Write a program find the Intersection of two linked list in C program (Data Structure and Algorithm.)

      • Data Structure and Algorithm

  Write a program find the  Intersection of two linked list in Data Structure.

#include <stdio.h>

 #include <stdlib.h> 

struct node{                                                                                                                                                           struct node *next;                                                                                                                                                                            

   };

void create(struct node **);

void findunion(struct node *, struct node *, struct node **);

void findintersect(struct node *, struct node *, struct node **);

void display(struct node *);

 

void release(struct node **);

int main()

{

struct node *phead, *qhead, *intersect, *unionlist;

phead = qhead = intersect = unionlist = NULL;

printf("Enter elements in the list 1\n");


  create(&phead);

printf("\nEnter elements in the list 2\n");

create(&qhead);

findunion(phead, qhead, &unionlist);

findintersect(phead, qhead, &intersect);

printf("\nDisplaying list 1:\n");


display(phead);

  printf("Displaying list 2:\n");

display(qhead);

printf("Displaying the union of the 2 lists:\n");

    display(unionlist);

printf("Displaying the intersection of the 2 lists:\n");

if (intersect == NULL)

      {

printf("Null\n");

    }

    else

    {

   display(intersect);

    }

    release(&phead);

    release(&qhead);

    release(&unionlist);

   release(&intersect);

    return 0;

}

void findintersect(struct node *p, struct node *q, struct node **intersect)

{

    struct node *ptemp, *qtemp, *itemp, *irear, *ifront;

    ptemp = p;

    while (ptemp != NULL)

    {

        qtemp = q;

        ifront = *intersect;

    while (qtemp != NULL && ptemp->num != qtemp->num)

        {

       qtemp = qtemp->next;

       }

        if (qtemp != NULL)

        {

         if (ifront != NULL)

        {

      if (ifront->num == qtemp->num)

     {

     ptemp = ptemp->next;

     continue;

  }

       ifront = ifront->next;            


  }

 itemp = (struct node *)malloc(sizeof(struct node));

  itemp->num = qtemp->num;

   itemp->next = NULL;

   if (*intersect == NULL)


            {

 *intersect = itemp;

 }


   else


        {        


 irear->next = itemp;


   }

  

  irear = itemp;

 }

 ptemp = ptemp->next;

     }  


}

 void findunion(struct node *p, struct node *q, struct node **unionlist


{

struct node *utemp, *ufront, *urear;

   int flag = 0;

  while (p != NULL)

    {

        ufront = *unionlist;

  while (ufront != NULL) 


        {

            if (ufront->num == p->num) 


            {

                flag = 1;


            }


            ufront = ufront->next;


        }


        if (flag)

        {

            flag = 0;

        }

        else

        {

          utemp = (struct node *)malloc(sizeof(struct node));

            utemp->num = p->num;

            utemp->next = NULL;

            if (*unionlist == NULL)


           {

     *unionlist = utemp;

            }


            else 


            {

                urear->next = utemp; 


            }

            urear = utemp; 


        }

 p = p->next;

 

    }

       

while (q != NULL)

    {

        ufront = *unionlist; 

        while (ufront != NULL)

        {

            if (ufront->num == q->num)

            {


                flag = 1; 


            }

            ufront = ufront->next;

        }

        if (flag) 

        { 

            flag = 0;

        }

        else 

        {

            utemp = (struct node *)malloc(sizeof(struct node));

            utemp->num = q->num; 

            utemp->next = NULL; 

            if (*unionlist == NULL) 

            {

                *unionlist = utemp;

            }

            else

            {

                urear->next = utemp; 


            } 

            urear = utemp;

        }

        q = q->next; 


    }

}


void create(struct node **head)


{

  struct node *temp, *rear;

  int ch, a;

    do

    {

        printf("Enter a number: ");

scanf("%d", &a);

    temp = (struct node *)malloc(sizeof(struct node));


  temp->num = a;

temp->next = NULL;

 if (*head == NULL)

{

        

            *head = temp;


 }

        else


 {

rear->next = temp;

       } 

        rear = temp;


        printf("Do you want to continue [1/0] ? ");


        scanf("%d", &ch);


    } while (ch != 0);

void display(struct node *head)

{

    while (head != NULL;

    {

        printf("%d   ", head->num);

        head = head->next; 

    }

    printf("\n");

}

void release(struct node **head)

{

    struct node *temp = *head;

    while ((*head) != NULL)

    {

        (*head) = (*head)->next;


        free (temp)


        temp = *head;

    }

}


________________________________________________________________________


 


 


                           OUTPUT

amr@amr-virtual-machine:~$ gcc pp.c -o pp

amr@amr-virtual-machine:~$ ./pp

Enter elements in the list 1

Enter a number: 3

Do you want to continue [1/0] ? 1

Enter a number: 3

Do you want to continue [1/0] ? 1

Enter a number: 5

Do you want to continue [1/0] ? 1

Enter a number: 6

Do you want to continue [1/0] ? 0

Enter elements in the list 2

Enter a number: 3

Do you want to continue [1/0] ? 1

Enter a number: 9

Do you want to continue [1/0] ? 1

Enter a number: 5

Do you want to continue [1/0] ? 0

Displaying list 1:

3   3   5   6  

Displaying list 2:

3   9   5  

Displaying the intersection of the 2 lists:

3   5  


 


_______________________________________________________________________

Comments

Popular posts from this blog

-Write C program to find even and odd number using macro

BCA (SCIENCE) JAVA PRACTICAL SLIPS PAGES.(JAVA) UNIVERSITY OF PUNE

How to OCR Text Extraction in Flutter Using Google ML Kit