Data structure Lab progrms

69
Name : A. Arul Jef ferson Roll No: 09MA01 Page 1 Ex.No:1 MOVING NODES IN A LINKED LIST AI M: Write a program such that there is a function “move” which moves a node forward by n positions in a linked list. PROGRAM: # include<stdio.h> # include<conio.h> # include "malloc.h" struct node { int data; struct node *link; }; void add(struct node **,int ); void display(struct node *); void move(struct node **,int,int); int count(struct node *); void main() { int num,n,i,elem,posi; struct node *ptr,*temp; ptr=NULL; clrscr(); printf("MOVE operation in Link list\n"); printf("---------------------------"); printf("\n"); printf("Enter no of elements:"); scanf("%d",&n);

Transcript of Data structure Lab progrms

Page 1: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 1/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 1

Ex.No:1

MOVING NODES IN A LINKED LIST

AI M: 

Write a program such that there is a function “move” which moves a node forward by

n positions in a linked list.

PROGRAM:

# include<stdio.h>

# include<conio.h>

# include "malloc.h"

struct node

{

int data;

struct node *link;

};

void add(struct node **,int );

void display(struct node *);

void move(struct node **,int,int);

int count(struct node *);

void main()

{

int num,n,i,elem,posi;

struct node *ptr,*temp;

ptr=NULL;

clrscr();

printf("MOVE operation in Link list\n");

printf("---------------------------");

printf("\n");

printf("Enter no of elements:");

scanf("%d",&n);

Page 2: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 2/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 2

for(i=1;i<=n;i++)

{

printf("Enter the element you want to add: ");

scanf("%d",&num);

add(&ptr,num);

display(ptr);

printf("\n");

}

printf("Element to be moved:\n");

scanf("%d",&elem);

printf("Number of position to be moved forwardly:\n");

scanf("%d",&posi);

move(&ptr,elem,posi);

printf("\nList after MOVE operation:\n");

display(ptr);

getch();

}

void add(struct node **q,int num)

{

struct node *temp;

temp = *q;

if(*q==NULL)

{

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

temp = *q;

}

else

{

while((temp->link)!=NULL)

{

temp=temp->link;

}

Page 3: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 3/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 3

temp->link = malloc(sizeof(struct node));

temp=temp->link;

}

temp->data = num;

temp->link = NULL;

}

void display(struct node *pt)

{

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

pt=pt->link;

while(pt!=NULL)

{

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

pt=pt->link;

}

}

void move(struct node ** pt,int elem,int posi)

{

int pos=1,n=1,last;

struct node * temp,* temp1,*prev;

temp=*pt;

temp1=*pt;

while(temp->data!=elem)

{

prev=temp;

temp=temp->link;

++n;

}

while(pos!=(n-posi-1))

{

Page 4: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 4/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 4

temp1=temp1->link;

++pos;

}

if((n-posi-1)==0)

{

prev->link=temp->link;

temp->link=*pt;

*pt=temp;

}

else

{

prev->link=temp->link;

temp->link=temp1->link;

temp1->link=temp;

}

}

int count(struct node * p)

{

int c=0;

while(p!=NULL)

{

p=p->link;

c++;

}

return c;

}

Output:

MOVE operation in Link list

-----------------------------------

Enter the number of elements : 6

Page 5: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 5/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 5

Enter the element you want to add: 1

1

Enter the element you want to add: 4

1--> 4

Enter the element you want to add: 2

1--> 4--> 2

Enter the element you want to add: 6

1--> 4--> 2--> 6

Enter the element you want to add: 7

1--> 4--> 2--> 6--> 7

Enter the element you want to add: 3

1--> 4--> 2--> 6--> 7--> 3

Element to be moved:

7

Number of position to be moved forwardly:

3

List after MOVE operation:

1--> 7--> 4--> 2--> 6--> 3

Page 6: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 6/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 6

Ex.No:2

GENERATE DOUBLY LINKED LIST FROM SINGLY LINKED LIST

AI M: 

Write a program to generate a doubly linked list from it‟s singly linked list

representation.

PROGRAM:

#include<stdio.h>

#include<conio.h>

#include"malloc.h"

struct node

{

int data;

struct node *prev,*link;

};

struct node1

{

int data;

struct node1 *link;

};

void add(struct node1 **,int);

void display(struct node *);

void generate(struct node **pt,struct node1 **pt1);

void display1(struct node1 *);

void main()

{

int num,n,i,elem,posi;

struct node *ptr,*temp;

struct node1 *ptr1;

Page 7: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 7/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 7

ptr=NULL;

ptr1=NULL;

clrscr();

printf("Generation of Double link list from Single link list\n");

printf("----------------------------------------------------\n");

printf("\n");

printf("Enter the number of elements you want to insert in SINGLE link list:");

scanf("%d",&n);

printf("\n");

for(i=1;i<=n;i++)

{

printf("Enter the element you want to add:");

scanf("%d",&num);

add(&ptr1,num);

display1(ptr1);

printf("\n");

}

generate(&ptr,&ptr1);

printf("\nAfter conversion from SINGLE to DOUBLE:\n");

printf("\n");

display(ptr);

getch();

}

void add(struct node1 ** pt,int num)

{

struct node1 *temp,*current,*previous;

current=malloc(sizeof(struct node));

current->data=num;

current->link=NULL;

temp=*pt;

if(temp==NULL)

{

Page 8: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 8/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 8

*pt=current;

}

else

{

while(temp->link!=NULL)

{

temp=temp->link;

}

temp->link=current;

}

}

void display(struct node *pt)

{

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

pt=pt->link;

while(pt!=NULL)

{

printf("<--> %d",pt->data);

pt=pt->link;

}

}

void display1(struct node1 *pt)

{

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

pt=pt->link;

while(pt!=NULL)

{

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

pt=pt->link;

}

}

Page 9: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 9/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 9

void generate(struct node **pt,struct node1 **pt1)

{

int ele;

struct node *temp,*current;

struct node1 *temp1;

current=malloc(sizeof(struct node1));

current->link=NULL;

current->prev=NULL;

temp=*pt;

temp1=*pt1;

if(*pt1==NULL)

{

printf("Empty ");

}

else

{

ele=temp1->data;

current->data=ele;

temp=current;

temp1=temp1->link;

*pt=temp;

while(temp1)

{

ele=temp1->data;

temp->link=malloc(sizeof(struct node));

temp->link->prev=temp;

temp=temp->link;

temp->data=ele;

temp->link=NULL;

temp1=temp1->link;

}

}

}

Page 10: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 10/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 10

Output:

Generation of Double link list from Single link list

-------------------------------------------------------------

Enter the number of elements you want to insert in SINGLE link list:5

Enter the element you want to add:34

34

Enter the element you want to add:56

34--> 56

Enter the element you want to add:11

34--> 56--> 11

Enter the element you want to add:75

34--> 56--> 11--> 75

Enter the element you want to add:22

34--> 56--> 11--> 75--> 22

After conversion from SINGLE to DOUBLE:

34<--> 56<--> 11<--> 75<--> 22

Page 11: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 11/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 11

Ex.No:3

SEARCHING IN BST

AI M: 

Write a program to search for an element using the BST.

PROGRAM:

#include<stdio.h>

#include<conio.h>

#include<alloc.h>

struct bnode

{

int data;

struct bnode *lchild,*rchild;

};

void insert(struct bnode **,int);

void search(struct bnode **,int);

void inorder(struct bnode *);

void main()

{

int i,will,num,n;

struct bnode *root;

root=NULL;

clrscr();

will=1;

printf("\nElement search in BST");

printf("\n---------------------");

printf("\n");

printf("Enter the number of nodes in BST: ");

scanf("%d",&n);

for(i=1;i<=n;i++)

{

printf(" Enter the element you want to add: ");

Page 12: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 12/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 12

scanf("%d",&num);

insert(&root,num);

printf("\n");

}

printf("Nodes displayed in INORDER:\n");

inorder(root);

while(will)

{

printf("\nEnter the element you wants to find: ");

scanf("%d",&num);

search(&root,num);

printf("\n");

printf("\nDO you want to continue (press 1 for YES or 0 for quit):");

scanf("%d",&will);

}

getch();

}

void insert(struct bnode ** rt,int ele)

{

struct bnode *temp,*current;

current=malloc(sizeof(struct bnode));

current->data=ele;

current->lchild=NULL;

current->rchild=NULL;

temp=*rt;

if(*rt==NULL)

{

*rt=current;

}

else

{

while(temp!=NULL)

Page 13: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 13/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 13

{

if(temp->data<ele)

{

if(temp->rchild==NULL)

{

temp->rchild=current;

temp=NULL;

}

else

{

temp=temp->rchild;

}

}

else

{

if(temp->lchild==NULL)

{

temp->lchild=current;

temp=NULL;

}

else

{

temp=temp->lchild;

}

}

}

}

}

void search(struct bnode **pt,int ele)

{

int flag=1;

struct bnode *temp,*prev;

Page 14: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 14/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 14

temp=*pt;

while(temp!=NULL)

{

if(temp->data==ele)

{

if(temp==*pt)

{

printf("Element %d is found at root ",ele);

temp=NULL;

flag=0;

}

else

{

printf("\nElement %d is found\n",ele);

printf("\nParent e lement is:%d",prev->data);

temp=NULL;

flag=0;

}

}

else if(temp->data>ele)

{

prev=temp;

temp=temp->lchild;

}

else if(temp->data<ele)

{

prev=temp;

temp=temp->rchild;

}

}

if(flag==1)

{

printf("\nElement is not found");

Page 15: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 15/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 15

}

return;

}

void inorder(struct bnode *rt)

{

if(rt!=NULL)

{

inorder(rt->lchild);

printf("\t%d",rt->data);

inorder(rt->rchild);

}

else

return;

}

Output:

Element search in BST

----------------------------

Enter the number of nodes in BST: 6

Enter the element you want to add: 5

Enter the element you want to add: 4

Enter the element you want to add: 6

Enter the element you want to add: 2

Enter the element you want to add: 7

Enter the element you want to add: 8

Page 16: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 16/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 16

Nodes displayed in INORDER:

2 4 5 6 7 8

Enter the element you wants to find: 4

Element 4 is found

Parent element is: 5

DO you want to continue (press 1 for YES or 0 for quit):1

Enter the element you wants to find: 5

Element 5 is found at Root

DO you want to continue (press 1 for YES or 0 for quit):1

Enter the element you wants to find: 16

Sorry the element 16 was not found

Page 17: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 17/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 17

Ex.No:4

INSERTION SORT USING LINKED LISTS

AI M: 

Write a program to implement insertion sort using linked lists.

PROGRAM:

# include<stdio.h>

# include<conio.h>

# include "malloc.h"

struct node

{

int data;

struct node *link;

};

void add(struct node **,int );

void display(struct node *);

void main()

{

int will,num;

clrscr();

struct node *ptr,*temp;

ptr=NULL;

will=1;

printf("Insertion Sort using link list\n");

printf("------------------------------");

printf("\n");

while(will==1)

{

printf(" Enter the element you want to add: ");

scanf("%d",&num);

add(&ptr,num);

display(ptr);

Page 18: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 18/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 18

printf("\nDo you want to continue ( press 1 for YES or 0 for quit):");

scanf("%d",&will);

}

getch();

}

void add(struct node **q,int num)

{

struct node *temp,*prev,*current;

current=malloc(sizeof(struct node));

current->data=num;

current->link=NULL;

temp = *q;

if(*q==NULL)

{

*q=current;

temp = *q;

}

else

{

if(temp->data>num)

{

if(temp->link!=NULL)

{

current->link=temp;

*q=current;

}

else{

current->link=temp;

*q=current;

temp->link=NULL;

}

}

Page 19: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 19/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 19

else

{

while((temp->link)!=NULL&&temp->data<num)

{

prev=temp;

temp=temp->link;

}

if(temp->link==NULL)

{

if(temp->data<num){

temp->link = current;

current->link=NULL;

}

else

{

current->link=temp;

prev->link=current;

}

}

else

{

current->link=temp;

prev->link=current;

}

}

}

}

void display(struct node *pt)

{

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

pt=pt->link;

while(pt!=NULL)

Page 20: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 20/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 20

{

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

pt=pt->link;

}

}

Output:

Insertion Sort using link list

---------------------------------

Enter the element you want to add: 5

5

Do you want to continue ( press 1 for YES or 0 for quit):1

Enter the element you want to add: 3

3--> 5

Do you want to continue ( press 1 for YES or 0 for quit):1

Enter the element you want to add: 2

2--> 3--> 5

Do you want to continue ( press 1 for YES or 0 for quit):1

Enter the element you want to add: 7

2--> 3--> 5--> 7

Do you want to continue ( press 1 for YES or 0 for quit):1

Enter the element you want to add: 6

2--> 3--> 5--> 6--> 7

Do you want to continue ( press 1 for YES or 0 for quit):1

Enter the element you want to add: 1

1--> 2--> 3--> 5--> 6--> 7

Do you want to continue ( press 1 for YES or 0 for quit):0

Page 21: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 21/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 21

Ex.No:5

MANIPULATION IN A BINARY TREE

AI M: 

Write a program to do the following on a binary tree

i.  Count the number of nodes in the tree

ii.  Sum the contents of the nodes

PROGRAM:

#include <stdio.h>

#include <conio.h>

#include <malloc.h>

#include <math.h>

int count(int *a, int n1);

int sum(int *a,int n1);

void insert( int *a ,int ele,int pos);

void main()

{

int n,i,n1,pos,ele;

clrscr();

printf(" Manipulation in Binary Tree");

printf("\n------------------------");

printf("\n");

printf(" \nEnter the number of nodes in binary tree: ");

scanf(" %d",&n);

n1= pow(2,n)-1;

printf("\nThe maximum number of possible positions: %d\n",n1);

int *a = (int *) malloc (n1 * sizeof(int));

for( i=0;i<n1;i++)

{

a[i]=0;

}

Page 22: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 22/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 22

for( i=0;i<n;i++)

{

printf("\nNodes position:");

scanf(" %d",&pos);

printf("\nElement:");

scanf(" %d",&ele);

insert(a,ele,pos);

}

printf("\nThe elements in the Binary Tree:\n");

for( i=0;i<n1;i++)

{

printf("\t%d",a[i]);

}

printf("\nTotal number of nodes:%d\n",count(a, n1));

printf("\nThe SUM of the elements in the Binary tree: %d",sum(a, n1));

getch();

}

void insert( int *a ,int ele,int pos)

{

a[pos] = ele ;

}

int count(int *a,int n1)

{

int i;

int count=0;

for(i=0;i<n1;i++)

{

if(a[i] != 0)

{

count++;

}

Page 23: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 23/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 23

}

return count;

}

int sum(int *a,int n1)

{

int i;

int count=0;

for(i=0;i<n1;i++)

{

if(a[i] != 0)

{

count +=a[i];

}

}

return count;

}

Output:

Manipulation in Binary Tree

-----------------------------------

Enter the number of nodes in binary tree: 3

The maximum number of possible positions: 7

Nodes position: 1

Element: 5

Nodes position: 6

Element: 3

Nodes position: 3

Element: 7

Page 24: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 24/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 24

The elements in the Binary Tree:

0 5 0 7 0 0 3

Total number of nodes: 3

The SUM of the elements in the Binary tree: 15

Page 25: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 25/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 25

Ex.No:6 

LINEAR SEARCH IN DOUBLY LINKED LIST

AI M: 

Write a program to create a doubly linked list and perform search for an element „x‟

using linear search.

PROGRAM:

#include<stdio.h>

#include<conio.h>

#include"malloc.h"

struct node

{

int data;

struct node *prev,*link;

};

void add(struct node **,int);

void display(struct node *);

void search(struct node *,int);

void main()

{

int num,n,i,elem,posi;

struct node *ptr,*temp;

ptr=NULL;

clrscr();

printf("Linear search in Doubly link list\n");

printf("----------------------------------------");

printf("\n");

printf("Enter the number ofelements in list:");

scanf("%d",&n);

printf("\n");

for(i=1;i<=n;i++)

{

Page 26: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 26/69

Page 27: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 27/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 27

}

}

void display(struct node *pt)

{

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

pt=pt->link;

while(pt!=NULL)

{

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

pt=pt->link;

}

}

void search(struct node *pt,int elem)

{

struct node * temp;

int count=1;

temp=pt;

while(temp->data!=elem && temp->link!=NULL)

{

temp= temp->link;

++count;

}

if(temp->data==elem)

{

printf("Element %d found at the position %d",elem,count);

}

else

{

printf("Sorry Element Not found");

}

}

Page 28: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 28/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 28

Output:

Linear search in Doubly link list

---------------------------------------

Enter the number of elements in list:6

Enter the element you want to add:43

43

Enter the element you want to add:65

43--> 65

Enter the element you want to add:23

43--> 65--> 23

Enter the element you want to add:12

43--> 65--> 23--> 12

Enter the element you want to add:75

43--> 65--> 23--> 12--> 75

Enter the element you want to add:34

43--> 65--> 23--> 12--> 75--> 34

Enter the element to be searched: 75

Element 75 found at the position: 5

Page 29: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 29/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 29

Ex.No:7 

REVERSING A SINGLY LINKED LIST

AI M: 

Write a program to create a singly linked list. Then using a function „reverse‟, reverse

the contents of the list.

PROGRAM:

# include<stdio.h>

# include<conio.h>

# include "malloc.h"

struct node

{

int data;

struct node *link;

};

void main()

{

int will,num,i;

struct node *ptr,*temp;

void add(struct node **,int );

void display(struct node *);

void reverse(struct node **);

ptr=NULL;

clrscr();

printf("Reverse the Link list\n");

printf("---------------------\n");

printf("\n");

printf("Enter the number of elements for list:");

scanf("%d",&will);

for(i=1;i<=will;i++)

{

printf(" Enter the element you want to add: ");

Page 30: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 30/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 30

scanf("%d",&num);

add(&ptr,num);

display(ptr);

printf("\n");

}

printf("\nAfter Reverse operation:\n");

reverse(&ptr);

printf("\n");

display(ptr);

getch();

}

void add(struct node **q,int num)

{

struct node *temp;

temp = *q;

if(*q==NULL)

{

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

temp = *q;

}

else

{

while((temp->link)!=NULL)

{

temp=temp->link;

}

temp->link = malloc(sizeof(struct node));

temp=temp->link;

}

temp->data = num;

temp->link = NULL;

}

Page 31: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 31/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 31

void display(struct node *pt)

{

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

pt=pt->link;

while(pt!=NULL)

{

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

pt=pt->link;

}

}

void reverse(struct node ** pt)

{

struct node *temp1=*pt;

struct node *next=NULL,*prev=NULL;

while(temp1)

{

*pt=temp1;

next=temp1->link;

temp1->link=prev;

prev=temp1;

temp1=next;

}

}

Output:

Reverse the Link list

-------------------------

Enter the number of elements for list:6

Enter the element you want to add: 34

34

Page 32: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 32/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 32

Enter the element you want to add: 45

34--> 45

Enter the element you want to add: 12

34--> 45--> 12

Enter the element you want to add: 48

34--> 45--> 12--> 48

Enter the element you want to add: 63

34--> 45--> 12--> 48--> 63

Enter the element you want to add: 74

34--> 45--> 12--> 48--> 63--> 74

After Reverse operation:

74--> 63--> 48--> 12--> 45--> 34

Page 33: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 33/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 33

Ex.No:8 

INORDER TRAVERSAL ON A BST

AI M: 

Write a program to insert elements on a binary search tree and display the result of an

inorder traversal on the tree.

PROGRAM:

#include<stdio.h>

#include<conio.h>

#include<alloc.h>

struct bnode

{

int data;

struct bnode *lchild,*rchild;

};

void insert(struct bnode **,int);

void inorder(struct bnode *);

void main()

{

int i,will,num,n;

struct bnode *root;

root=NULL;

clrscr();

printf("Inorder traversal in BST\n");

printf("------------------------\n");

printf("\n");

printf("Enter number of nodes for BST:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{

printf(" Enter the element you want to add:");

scanf("%d",&num);

Page 34: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 34/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 34

insert(&root,num);

printf("\n");

}

printf("Nodes displayed in INORDER traversal:\n");

printf("\n");

inorder(root);

getch();

}

void insert(struct bnode ** rt,int ele)

{

struct bnode *temp,*current;

current=malloc(sizeof(struct bnode));

current->data=ele;

current->lchild=NULL;

current->rchild=NULL;

temp=*rt;

if(*rt==NULL)

{

*rt=current;

}

else

{

while(temp!=NULL)

{

if(temp->data<ele)

{

if(temp->rchild==NULL)

{

temp->rchild=current;

temp=NULL;

}

else

Page 35: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 35/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 35

{

temp=temp->rchild;

}

}

else

{

if(temp->lchild==NULL)

{

temp->lchild=current;

temp=NULL;

}

else

{

temp=temp->lchild;

}

}

}

}

}

void inorder(struct bnode *rt)

{

if(rt!=NULL)

{

inorder(rt->lchild);

printf("\t%d",rt->data);

inorder(rt->rchild);

}

else

return;

}

Page 36: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 36/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 36

Output:

Inorder traversal in BST

------------------------------

Enter the number of nodes for BST: 8

Enter the element you want to add: 35

Enter the element you want to add: 23

Enter the element you want to add: 60

Enter the element you want to add: 12

Enter the element you want to add: 80

Enter the element you want to add: 34

Enter the element you want to add: 24

Enter the element you want to add: 50

Nodes displayed in INORDER traversal:

12 23 24 34 35 50 60 80

Page 37: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 37/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 37

Ex.No:9 

PREORDER TRAVERSAL ON A BST

AI M: 

Write a program to insert elements on a binary search tree and display the result of a

preorder traversal on the tree.

PROGRAM:

#include<stdio.h>

#include<conio.h>

#include<alloc.h>

struct bnode

{

int data;

struct bnode *lchild,*rchild;

};

void insert(struct bnode **,int);

void preorder(struct bnode *);

void main()

{

int i,will,num,n;

struct bnode *root;

root=NULL;

clrscr();

printf("Preorder traversal in BST\n");

printf("------------------------\n");

printf("\n");

printf("Enter number of nodes for BST:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{

printf(" Enter the element you want to add:");

scanf("%d",&num);

Page 38: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 38/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 38

insert(&root,num);

printf("\n");

}

printf("Nodes diaplayed in PREORDER traversal:\n");

printf("\n");

preorder(root);

getch();

}

void insert(struct bnode ** rt,int ele)

{

struct bnode *temp,*current;

current=malloc(sizeof(struct bnode));

current->data=ele;

current->lchild=NULL;

current->rchild=NULL;

temp=*rt;

if(*rt==NULL)

{

*rt=current;

}

else

{

while(temp!=NULL)

{

if(temp->data<ele)

{

if(temp->rchild==NULL)

{

temp->rchild=current;

temp=NULL;

}

else

Page 39: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 39/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 39

{

temp=temp->rchild;

}

}

else

{

if(temp->lchild==NULL)

{

temp->lchild=current;

temp=NULL;

}

else

{

temp=temp->lchild;

}

}

}

}

}

void preorder(struct bnode *rt)

{

if(rt!=NULL)

{

printf("\t%d",rt->data);

preorder(rt->lchild);

preorder(rt->rchild);

}

else

return;

}

Page 40: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 40/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 40

Output:

Preorder traversal in BST

-------------------------------

Enter the number of nodes for BST: 8

Enter the element you want to add: 12

Enter the element you want to add: 45

Enter the element you want to add: 67

Enter the element you want to add: 34

Enter the element you want to add: 23

Enter the element you want to add: 11

Enter the element you want to add: 5

Enter the element you want to add: 1

Nodes displayed in PREORDER traversal:

12 11 5 1 45 34 23 67

Page 41: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 41/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 41

Ex.No:10 

POSTORDER TRAVERSAL ON A BST

AI M: 

Write a program to insert elements on a binary search tree and display the result of a

postorder traversal on the tree.

PROGRAM:

#include<stdio.h>

#include<conio.h>

#include<alloc.h>

struct bnode

{

int data;

struct bnode *lchild,*rchild;

};

void insert(struct bnode **,int);

void postorder(struct bnode *);

void main()

{

int i,will,num,n;

struct bnode *root;

root=NULL;

clrscr();

printf("Postorder traversal in BST\n");

printf("------------------------\n");

printf("\n");

printf("Enter number of nodes for BST:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{

printf(" Enter the element you want to add:");

scanf("%d",&num);

Page 42: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 42/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 42

insert(&root,num);

printf("\n");

}

printf("Nodes displayed in POSTORDER travesal:\n");

printf("\n");

postorder(root);

getch();

}

void insert(struct bnode ** rt,int ele)

{

struct bnode *temp,*current;

current=malloc(sizeof(struct bnode));

current->data=ele;

current->lchild=NULL;

current->rchild=NULL;

temp=*rt;

if(*rt==NULL)

{

*rt=current;

}

else

{

while(temp!=NULL)

{

if(temp->data<ele)

{

if(temp->rchild==NULL)

{

temp->rchild=current;

temp=NULL;

}

else

Page 43: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 43/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 43

{

temp=temp->rchild;

}

}

else

{

if(temp->lchild==NULL)

{

temp->lchild=current;

temp=NULL;

}

else

{

temp=temp->lchild;

}

}

}

}

}

void postorder(struct bnode *rt)

{

if(rt!=NULL)

{

postorder(rt->lchild);

postorder(rt->rchild);

printf("\t%d",rt->data);

}

else

return;

}

Page 44: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 44/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 44

Output:

Postorder traversal in BST

---------------------------------

Enter the number of nodes for BST: 8

Enter the element you want to add: 45

Enter the element you want to add: 12

Enter the element you want to add: 34

Enter the element you want to add: 50

Enter the element you want to add: 67

Enter the element you want to add: 58

Enter the element you want to add: 23

Enter the element you want to add: 90

Nodes displayed in POSTORDER traversal:

23 34 12 58 90 67 50 45

Page 45: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 45/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 45

Ex.No:11 

MERGING LINKED LISTS

AI M: 

Write a program to combine two singly linked lists such that suppose one is {l1, l2,

l3, … ln} and the other is {M1, m2, … mn}, then the combined list is {l1, m1, l2, m2, …ln,

mn}.

PROGRAM:

# include<stdio.h>

# include<conio.h>

# include "malloc.h"

struct node

{

int data;

struct node *link;

};

void add(struct node **,int );

void display(struct node *);

void merge(struct node ** list1,struct node ** list2);

int count(struct node *);

void main()

{

int num,n,n2,i,j,elem,posi;

struct node *ptr,*ptr1,*temp;

ptr=NULL;

ptr1=NULL;

clrscr();

printf("Merge two Link lists\n");

printf("--------------------\n");

printf("\n");

printf("Enter no ofelements of List 1:");

scanf("%d",&n)

Page 46: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 46/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 46

for(i=1;i<=n;i++)

{

printf(" Enter the element you want to add: ");

scanf("%d",&num);

add(&ptr,num);

display(ptr);

printf("\n");

}

printf("Enter no ofelements of List 2:");

scanf("%d",&n2);

for(j=1;j<=n2;j++)

{

printf(" Enter the element you want to add: ");

scanf("%d",&num);

add(&ptr1,num);

display(ptr1);

printf("\n");

}

printf("\nAfter Merging of List 1 & List 2:\n");

printf("\n");

merge(&ptr,&ptr1);

display(ptr);

getch();

}

void add(struct node **q,int num)

{

struct node *temp;

temp = *q;

if(*q==NULL)

{

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

temp = *q;

Page 47: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 47/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 47

}

else

{

while((temp->link)!=NULL)

{

temp=temp->link;

}

temp->link = malloc(sizeof(struct node));

temp=temp->link;

}

temp->data = num;

temp->link = NULL;

}

void display(struct node *pt)

{

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

pt=pt->link;

while(pt!=NULL)

{

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

pt=pt->link;

}

}

void merge(struct node ** list1,struct node ** list2)

{

int last;

struct node * temp1,* temp2,* temp1nxt,*temp2nxt,*prev;

temp1=*list1;

temp2=*list2;

prev=temp1;

while(temp1->link!=NULL && temp2->link!=NULL)

{

Page 48: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 48/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 48

temp1nxt=temp1->link;

temp2nxt=temp2->link;

temp1->link=temp2;

temp2->link=temp1nxt;

temp1=temp1nxt;

temp2=temp2nxt;

}

if(temp1->link==NULL)

{

temp1->link=temp2;

}

else

{

temp1nxt=temp1->link;

temp1->link=temp2;

temp2->link=temp1nxt;

}

*list1=prev;

}

Output:

Merge two Link lists

--------------------------

Enter the number of elements of List 1: 5

Enter the element you want to add: 1

1

Enter the element you want to add: 3

1--> 3

Enter the element you want to add: 5

1--> 3--> 5

Enter the element you want to add: 7

Page 49: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 49/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 49

1--> 3--> 5--> 7

Enter the element you want to add: 9

1--> 3--> 5--> 7--> 9

Enter the number of elements of List 2: 5

Enter the element you want to add: 2

2

Enter the element you want to add: 4

2--> 4

Enter the element you want to add: 6

2--> 4--> 6

Enter the element you want to add: 8

2--> 4--> 6--> 8

Enter the element you want to add: 10

2--> 4--> 6--> 8--> 10

After Merging of List 1 & List 2:

1--> 2--> 3--> 4--> 5--> 6--> 7--> 8--> 9--> 10

Page 50: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 50/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 50

Ex.No:12 

DATABASE USING LINKED LISTS

AI M: 

Write a program that reads the name, age and salary of 10 persons and maintains them

in a linked list sorted by name.

PROGRAM:

#include<stdio.h>

#include<conio.h>

#include<ctype.h>

#include<string.h>

struct node

{

char name[20];

int age;

int salary;

struct node *next;

}*current,*temp,*start,*prev;

void insertnode(char [],int,int);

void main()

{

int i,*nam,a,s;

clrscr();

start=temp=prev=current=NULL;

printf("Database using Link List\n");

printf("------------------------\n");

printf("\n");

printf("\nEnter the Details");

for(i=0;i<10;i++)

{

printf("\nName of the employee: ");

Page 51: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 51/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 51

scanf("%s",nam);

printf("\nAge: ");

scanf("%d",&a);

printf("\nSalary: ");

scanf("%d",&s);

insertnode(nam,a,s);

}

temp=start;

printf("\nNAME AGE SALARY");

printf("\n------------------");

while(temp!=NULL)

{

printf("\n%s %d %d",temp->name,temp->age,temp->salary);

temp=temp->next;

}

getch();

}

void insertnode(char nam[],int a,int s)

{

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

strcpy(current->name,nam);

current->age=a;

current->salary=s;

current->next=NULL;

if(start==NULL)

{

start=current;

}

else

{

temp=start;

Page 52: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 52/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 52

while((strcmp(temp->name,current->name))<0)

{

if(temp->next==NULL)

{

temp->next=current;

break;

}

else

{

prev=temp;

temp=temp->next;

}

}

if(strcmp(temp->name,current->name)>0)

{

if(temp==start)

{

current->next=start;

start=current;

}

else

{

current->next=temp;

prev->next=current;

}

}

}

Page 53: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 53/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 53

Output:

Database using Link List

------------------------------

Name of the employee: suresh

Age: 23

Salary: 4500

Name of the employee: jeffe

Age: 22

Salary: 4200

Name of the employee: arul

Age: 24

Salary: 5000

Name of the employee: zamil

Age: 23

Salary: 4500

Name of the employee: berry

Age: 24

Salary: 5000

Name of the employee: sachin

Age: 35

Salary: 4580

Name of the employee: david

Age: 23

Salary: 6000

Page 54: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 54/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 54

Name of the employee: ruban

Age: 23

Salary: 3565

Name of the employee: viki

Age: 23

Salary: 5342

Name of the employee: jose

Age: 34

Salary: 6543

NAME AGE SALARY

---------- ------- -------------

arul 24 5000

berry 24 5000

david 23 6000

  jeffe 22 4200

  jose 34 6543

ruban 23 3565

sachin 35 4580

suresh 23 4500

viki 23 5342

zamil 23 4500

Page 55: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 55/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 55

Ex.No:13 

SIMILAR BINARY TREES

AI M: 

Write a program to determine whether or not one binary tree is similar to some other

binary tree.

PROGRAM:

#include <stdio.h>

#include <conio.h>

#include <malloc.h>

#include <math.h>

void similar(int *a,int n1,int *b,int n2);

void insert( int *a ,int ele,int pos);

void main()

{

int n,i,n1,pos,ele;

int bin,bin2;

clrscr();

printf("\n Checking of similar Binary Trees");

printf("\n---------------------------------");

printf("\n");

printf("\n Enter the number of nodes in binary tree 1:");

scanf(" %d",&n);

n1= pow(2,n)-1;

printf(" The max number of possible position is %d\n",n1);

int *a = (int *) malloc (n1 * sizeof(int));

for( i=0;i<n1;i++)

{

a[i]=0;

}

Page 56: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 56/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 56

for( i=0;i<n;i++)

{

printf("\nPosition and Element: \n");

scanf(" %d %d",&pos,&ele);

insert(a,ele,pos);

}

for( i=0;i<n1;i++)

{

printf("\nNodes of Tree 1: \t%d",a[i]);

}

printf(" \nEnter the number of nodes in binary tree 2:");

scanf(" %d",&bin);

bin2= pow(2,bin)-1;

printf("\nThe max number of possible position i %d\n",bin2);

int *b = (int *) malloc (bin2 * sizeof(int));

for( i=0;i<bin2;i++)

{

b[i]=0;

}

for( i=0;i<bin;i++)

{

printf(" \nThe position and Element:\n");

scanf(" %d %d",&pos,&ele);

insert(b,ele,pos);

}

for( i=0;i<bin2;i++)

{

printf("\nNodes of Tree 2 \t%d",b[i]);

}

similar(a,n1,b,bin2);

Page 57: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 57/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 57

getch();

}

void insert( int *a ,int ele,int pos)

{

a[pos] = ele ;

}

void similar(int *a,int n1,int *b,int n2)

{

int i=0;

if(n1 != n2)

{

printf("\n\nRESULT:Not a Similar tree\n");

return ;

}

else

{

while((a[i]==b[i])&&i!=n1-1)

{

++i;

}

if(i!=n1-1)

{

printf("\n\nRESULT: Not a similar tree\n ");

return ;

}

else

{

printf("\n\nRESULT: Similar Tree");

}

}

}

Page 58: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 58/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 58

Output:

Checking of similar Binary Trees

----------------------------------------

Enter the number of nodes in binary tree 1: 3

The max number of possible position is 7

Position and Element:

0

4

Position and Element:

3

6

Position and Element:

6

2

Nodes of Tree 1:

4 0 0 6 0 0 2

Enter the number of nodes in binary tree 2: 3

The max number of possible position is 7

The position and Element:

0

4

The position and Element:

3

6

Page 59: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 59/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 59

The position and Element:

6

2

Nodes of Tree 2 :

4 0 0 6 0 0 2

RESULT: Similar Tree

Page 60: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 60/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 60

Ex.No:14 

INTERSECT DOUBLY LINKED LISTS

AI M: 

Write a program to intersect two doubly linked lists.

PROGRAM:

#include<stdio.h>

#include<conio.h>

#include"malloc.h"

struct node

{

int data;

struct node *prev,*link;

};

void add(struct node **,int);

void display(struct node *);

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

void main()

{

int num,n,i,j,elem,posi;

struct node *ptr,*ptr1,*tempy;

ptr=NULL;

ptr1=NULL;

tempy=NULL;

clrscr();

printf("Intersection on two Link lists\n");

printf("-----------------------------------\n");

printf("\n");

printf("\nEnter no ofelements in list 1:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{

Page 61: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 61/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 61

printf(" Enter the element you want to add: ");

scanf("%d",&num);

add(&ptr,num);

display(ptr);

printf("\n");

}

printf("Enter the no of elements in list 2:");

scanf("%d",&elem);

for(j=1;j<=elem;j++)

{

printf(" Enter the element you want to add: ");

scanf("%d",&num);

add(&ptr1,num);

display(ptr1);

printf("\n");

}

intersect(&ptr,&ptr1,&tempy);

printf("\nIntersected link list:\n");

printf("\n");

display(tempy);

getch();

}

void add(struct node ** pt,int num)

{

struct node *temp,*current,*previous;

current=malloc(sizeof(struct node));

current->data=num;

current->prev=NULL;

current->link=NULL;

temp=*pt;

if(temp==NULL)

{

Page 62: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 62/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 62

*pt=current;

}

else

{

while(temp->link!=NULL)

{

previous=temp;

temp=temp->link;

}

temp->link=current;

current->prev=previous;

}

}

void display(struct node *pt)

{

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

pt=pt->link;

while(pt!=NULL)

{

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

pt=pt->link;

}

}

void intersect(struct node **pt1,struct node **pt2,struct node **result)

{

struct node *temp1,*temp2,*current,*tem,*previous;

current=malloc(sizeof(struct node));

current->link=NULL;

current->prev=NULL;

temp1=*pt1;

temp2=*pt2;

Page 63: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 63/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 63

while(temp1)

{

while(temp1->data!=temp2->data&&temp2!=NULL)

{

temp2=temp2->link;

}

if(temp1->data==temp2->data)

{

if(*result==NULL)

{

current->data=temp1->data;

*result=current;

tem=*result;

previous=tem;

}

else

{

while(tem!=NULL)

{

previous=tem;

tem=tem->link;

}

previous->link=malloc(sizeof(struct node));

previous->link->data=temp1->data;

previous->link->prev=previous;

previous->link->link=NULL;

}

}

tem=*result;

temp2=*pt2;

temp1=temp1->link;

}

}

Page 64: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 64/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 64

Output:

Intersection on two Link lists

-----------------------------------

Enter no ofelements in list 1: 5

Enter the element you want to add: 4

4

Enter the element you want to add: 7

4--> 7

Enter the element you want to add: 2

4--> 7--> 2

Enter the element you want to add: 8

4--> 7--> 2--> 8

Enter the element you want to add: 1

4--> 7--> 2--> 8--> 1

Enter the no of elements in list 2: 5

Enter the element you want to add: 1

1

Enter the element you want to add: 3

1--> 3

Enter the element you want to add: 8

1--> 3--> 8

Enter the element you want to add: 9

1--> 3--> 8--> 9

Enter the element you want to add: 4

1--> 3--> 8--> 9--> 4

Intersected link list:

4--> 8--> 1

Page 65: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 65/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 65

Ex.No:15 

SINGLY LINKED LIST FROM DOUBLY LINKED LIST

AI M: 

Write a program to generate a singly linked list from it‟s doubly linked list

representation.

PROGRAM:

#include<stdio.h>

#include<conio.h>

#include"malloc.h"

struct node

{

int data;

struct node *prev,*link;

};

struct node1

{

int data;

struct node1 *link;

};

void add(struct node **,int);

void display(struct node *);

void generate(struct node **pt,struct node1 **pt1);

void display1(struct node1 *);

void main()

{

int num,n,i,elem,posi;

struct node *ptr,*temp;

struct node1 *ptr1;

ptr=NULL;

ptr1=NULL;

clrscr();

Page 66: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 66/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 66

printf("Generation of Single link list from Double link list\n");

printf("----------------------------------------------------\n");

printf("\n");

printf("Enter the number of elements you want to insert in DOUBLE link list:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{

printf(" Enter the element you want to add :");

scanf("%d",&num);

add(&ptr,num);

display(ptr);

printf("\n");

}

generate(&ptr,&ptr1);

printf("\nAfter conversion from Double link list to Single link list:\n");

printf("\n");

display1(ptr1);

getch();

}

void add(struct node ** pt,int num)

{

struct node *temp,*current,*previous;

current=malloc(sizeof(struct node));

current->data=num;

current->prev=NULL;

current->link=NULL;

temp=*pt;

if(temp==NULL)

{

*pt=current;

}

else

Page 67: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 67/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 67

{

while(temp->link!=NULL)

{

previous=temp;

temp=temp->link;

}

temp->link=current;

current->prev=previous;

}

}

void display(struct node *pt)

{

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

pt=pt->link;

while(pt!=NULL)

{

printf("<--> %d",pt->data);

pt=pt->link;

}

}

void display1(struct node1 *pt)

{

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

pt=pt->link;

while(pt!=NULL)

{

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

pt=pt->link;

}

}

Page 68: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 68/69

Name : A. Arul Jefferson

Roll No: 09MA01 Page 68

void generate(struct node **pt,struct node1 **pt1)

{

int ele;

struct node *temp;

struct node1 *temp1,*current;

current=malloc(sizeof(struct node1));

current->link=NULL;

temp=*pt;

temp1=*pt1;

if(*pt==NULL)

{

printf("List is empty");

}

else

{

ele=temp->data;

current->data=ele;

temp1=current;

temp=temp->link;

*pt1=temp1;

while(temp)

{

ele=temp->data;

temp1->link=malloc(sizeof(struct node1));

temp1=temp1->link;

temp1->data=ele;

temp1->link=NULL;

temp=temp->link;

}

}

}

Page 69: Data structure Lab progrms

8/8/2019 Data structure Lab progrms

http://slidepdf.com/reader/full/data-structure-lab-progrms 69/69

Output:

Generation of Single link list from Double link list

------------------------------------------------------------

Enter the number of elements you want to insert in DOUBLE link list:4

Enter the element you want to add : 4

4

Enter the element you want to add : 7

4<--> 7

Enter the element you want to add : 2

4<--> 7<--> 2

Enter the element you want to add : 8

4<--> 7<--> 2<--> 8

After conversion from Double link list to Single link list:

4--> 7--> 2--> 8