Data Structure Lab Manual
Data Structure Lab Manual
FOR
DATASTRUCTURE
Prepared by
…………….......
Lecturer
………….......
DEPARTMENTOFCOMPUTERSCIENCE&ENGINEERING
#include<stdio.h>
#include<conio.h>
voidmain()
{
inti,n,a[10],s;
clrscr();
printf(“Enterthenumberofelement:\n”);
scanf(“%d”,&n);
s=0;
printf(“Enterelement:\n”);
for(i=0;i<n;i++)
{
printf(“a[%d]=”,i);
scanf(“%d”,&a[i]);
s=s+a[i];
}
printf(“Sumofarraryelement:%d”,s);
getch();
}
Output:
3
Lab manual for Data Structure
#include<stdio.h>
#include<
{
inti,n,pos,num,a[10];
clrscr();
printf(“Enterthenumberofelement:\n”);
scanf(“%d”,&n);
printf(“Enterelement:\n”);
for(i=0;i<n;i++)
{
printf(“a[%d]=”,i);
scanf(“%d”,&a[i]);
}
printf(“\nEntertheposwheretheno.istobeinserted:”); scanf(“%d”,&pos);
printf(“\nEnterthetheno.istobeinserted:”);
scanf(“%d”,&num);
for(i=n-1;i>=pos;i--)
a[i+1]=a[i];
n=n+1;
a[pos]=num;
printf(“\nDisplayarrayafterinsertion:\n”);
for(i=0;i<n;i++)
{
printf(“a[%d]=%d\n”,i,a[i]);
}
getch();
}
Output:
4
Lab manual for Data Structure
#include<stdio.h>
#include<conio.h>
voidmain()
{
inti,n,pos,a[10];
clrscr();
printf("Enterthenumberofelements:\n");
scanf("%d",&n);
printf("Enterelement:\n");
for(i=0;i<n;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("\nEntertheposfromwhichtheno.hastobedeleted:");
scanf("%d",&pos);
for(i=pos;i<n;i++)
a[i]=a[i+1];
n=n-1;
printf("\nDisplararrayafterdeletion:\n");
for(i=0;i<n;i++)
{
printf("\na[%d]=%d",i,a[i]);
}
getch();
}
Output:
5
Lab manual for Data Structure
7
Lab manual for Data Structure
5. Write a program to multiply two matrix A and B.
#include<stdio.h>
#include<conio.h>
void main()
{
int i,j,m,n,p,q,k;
inta[10][10],b[10][10], c[10][10];
clrscr();
printf("\nEnternoofrowsandcolumnofmatrixA:");
scanf("%d%d",&m,&n);
printf("\nEnternoofrowsandcolumnofmatrixB:");
scanf("%d%d",&p,&q);
printf("\nEnterelementsofmatrixA:\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
printf("\nEnterelementsofmatrixB:\n");
for(i=0;i<p;i++)
for(j=0;j<q;j++)
scanf("%d",&b[i][j]);
if(n==p)
{
for(i=0;i<m;i++)
for(j=0;j<q;j++)
{
c[i][j]=0;
for(k=0;k<n;k++)
c[i][j]=c[i][j]+(a[i][k]*b[k][j]);
}
}
else
{
printf("\nMatrixcannotbemultiplied");
exit(1);
}
printf("\nDisplaymatrixA:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
8
Lab manual for Data Structure
printf("\nDisplaymatrixB:\n");
for(i=0;i<p;i++)
{
for(j=0;j<q;j++)
printf("%d\t",b[i][j]);
printf("\n");
}
printf("\nDisplayProduct:\n");
for(i=0;i<m;i++)
{
for(j=0;j<q;j++)
printf("%d\t",c[i][j]);
printf("\n");
}
getch();
}
Output:
9
Lab manual for Data Structure
#include<stdio.h>
#include<conio.h>
#include<string.h>
voidmain()
{
charstr[20],str1[20];
int i ;
clrscr();
i=0;
printf("\nEnterstringtocopy:");
scanf("%s",&str);
while(str[i]!='\0')
{
str1[i]=str[i];
i++;
}
str1[i]='\0';
printf("\nTheDestinationstringis:%s",str1);
getch();
}
Output:
10
Lab manual for Data Structure
7. Write a program to Implementation of linked list using array.
#include<stdio.h>
#include<conio.h>
#define TRUE1
#defineSIZE10
struct link
{
intinfo;
intnext;
};
structlinknode[SIZE];
int Getnode();
voidCreatelist();
voidFreenode(int);
void Display();
voidInsert(int,int);
void Delete(int);int
p, avail=0;
voidmain()
{
intch=1,i,n,x;
clrscr();
/*Creationofavailablelist*/
for(i=0;i<SIZE-1;i++)
node[i].next=i+1;
node[SIZE-1].next=-1;
printf("\nCreateaList:");
Createlist();
while(ch!=4)
{
printf("\n1-DISPLAY");
printf("\n2-INSERT");
printf("\n3-DELETE");
printf("\n4-QUIT");
printf("\nEnteryourchoice:");
scanf("%d",&ch);
switch(ch)
{
case1 :
Display();
break;
case 2:
printf("\nNodeinsertion:afterwhichnode:");
scanf("%d",&n);
p=n;
printf("\nEntertheitemforinsertion:");
scanf("%d",&x);
Insert(p,x);
11
Lab manual for Data Structure
break;case
3:
printf("\nEnterthenodeafterwhichthenodewillbedeleted:"); scanf("%d",&n);
p=n;
Delete(p);
break;
case 4:
break;
default:
printf("\nWrongchoice!Tryagain:");
}
}
}
intGetnode()
{
if(avail==-1)
{
printf("\nOverflow:");
exit(0);
}
p=avail;
avail=node[avail].next;
return p;
}
voidFreenode(intq)
{
node[q].next=avail;
avail=q;
return;
}
voidCreatelist()
{
int x;
charc;
p=Getnode();
printf("\nEnteranitemtobeinserted:");
scanf("%d", &x);
node[p].info=x ;
node[p].next=-1;
while(TRUE)
{
printf("\nEnterthechoice(y/n):");
fflush(stdin);
c=getchar();
if(c=='y'||c=='Y')
{
printf("\nEnteranitemtobeinserted:");
scanf("%d",&x);
Insert(p,x);
12
Lab manual for Data Structure
node[p].next=-1;
}
else
return;
}
}
voidDisplay()
{
p=0;
while(node[p].next!=-1)
{
printf("\n%d\t%d\t%d:",p,node[p].info,node[p].next);
p=node[p].next;
}
printf("\n%d\t%d\t%d:",p,node[p].info,node[p].next);
}
voidInsert(intr,intx)
{
int q;
if(r==-1)
{
printf("\nvoidinsertion:");
return;
}
q=Getnode();
node[q].info=x;
node[q].next=node[r].next;
node[r].next=q;
return;
}
voidDelete(intr)
{
intq;
if(r==-1||node[r].next==-1)
{
printf("\nvoiddeletion:");
return;
}
q=node[r].next;
node[r].next=node[q].next;
Freenode(q);
return;
13
Lab manual for Data Structure
Output:
14
Lab manual for Data Structure
15
Lab manual for Data Structure
8. Write a program to Implementation of linked list using array.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>#defi
neMAXSTK100 int
top=-1;
intitems[MAXSTK];
int Isempty();
int Isfull();
voidPush(int);
int Pop();
voidDisplay();
void main()
{
intx;
char ch='1';
clrscr();
while(ch!='4')
{
printf("\n1-PUSH");
printf("\n 2-POP");
printf("\n3-DISPLAY");
printf("\n 4-QUIT");
printf("\nEnteryourchoice:");
fflush(stdin);
ch=getchar();
switch(ch)
{
case '1':
printf("\nEntertheelementtobepushed:");
scanf("%d",&x);
Push(x);
break;
case '2':
x=Pop();
printf("\nPopelementis%d\n:",x); break;
case '3':
Display();
break;
case '4':
break;
default:
printf("\nWrongchoice!Tryagain:");
}
}
}
intIsempty()
{
16
Lab manual for Data Structure
if(top==-1)
return 1;
else
return0;
}
intIsfull()
{
if(top==MAXSTK-1)
return1;
else
return0;
}
voidPush(intx)
{
if(Isfull())
{
printf("\nStackfull");
return;
}
top++;
items[top]=x;
}
intPop()
{
int x;
if(Isempty())
{
printf("\nStackempty");
exit(0);
}
x=items[top];
top--;
returnx;
}
voidDisplay()
{
int i;
if(Isempty())
{
printf("\nStackempty");
return;
}
printf("\nElementsintheStackare:\n");
for(i=top;i>=0;i--)
printf("%d\n",items[i]);
}
17
Lab manual for Data Structure
Output:
18
Lab manual for Data Structure
#include<stdio.h>
#include<conio.h>
intFactorial(int);
void main()
{
int i,n;
clrscr();
printf("\nEnterthenoofelements:"); scanf("%d",&n);
printf("Factorialof%dis%d",n,Factorial(n));
getch();
}
intFactorial(intn)
{
if(n==0)
return1;
else
returnn*Factorial(n-1);
}
Output:
19
Lab manual for Data Structure
Output:
22
Lab manual for Data Structure
23
Lab manual for Data Structure
Output:
26
Lab manual for Data Structure
27
Lab manual for Data Structure
12. Write a program to Implementation of binary search tree using array.
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define TRUE1
#defineTREENODES100
#defineFALSE0
struct tree
{
int info;
intused;
};
structtreenode[TREENODES];
void Createtree();
void Insert(int);
void
Display();voidSetle
ft(int,int);
voidSetright(int,int);
voidmain()
{
intx;
charch='1';
clrscr();
printf("\nEnterrootnodevalue:");
scanf("%d", &x);
Createtree(x);
while(ch!='3')
{
printf("\n1-INSERT");
printf("\n2-DISPLAY");
printf("\n3-QUIT");
printf("\nEnteryourchoice:");
fflush(stdin);
ch=getchar();
switch(ch)
{
case'1':
printf("\nEntertheelementtobeinserted:");
scanf("%d",&x);
Insert(x);
break;
case '2':
Display();
break;
28
Lab manual for Data Structure
case '3':
break;
default:
printf("\nWrongchoice!Tryagain:");
}
}
}
voidCreatetree(int x)
{
int i;
node[0].info=x;
node[0].used=TRUE;
for(i=1;i<TREENODES;i++)
node[i].used=FALSE;
}
voidInsert(intx)
{
intp,q;
p=q=0;
while(q<TREENODES&&node[q].used&&x!=node[p].info)
{
p=q;
if(x<node[p].info)
q=2*p+1;
else
q=2*p+2;
}
if(x==node[p].info)
printf("\n%disaduplicatenumber\n",x);
else
if(x<node[p].info)
Setleft(p,x);
else
Setright(p,x);
}
voidSetleft(intpos,intx)
{
int q;
q=2*pos+1;
if(q>TREENODES)
printf("\n Array overflow.");
elseif(node[q].used==TRUE)
printf("\nInvalidinsertion.");
else
{
node[q].info=x;
29
Lab manual for Data Structure
node[q].used=TRUE;
}
}
voidSetright(intpos,int x)
{
int q;
q=2*pos+2;
if(q>TREENODES)
printf("\nArrayoverflow.");
else
if(node[q].used==TRUE)
printf("\nInvalidinsertion.\n");
else
{
node[q].info=x;
node[q].used=TRUE;
}
}
voidDisplay()
{
int i;
for(i=0;i<TREENODES;i++)
if(node[i].used==TRUE)
printf("%d",node[i].info);
printf("\n");
}
30
Lab manual for Data Structure
Output:
31
Lab manual for Data Structure
13. Write a program to Search an element using sequential search.
#include<stdio.h>
#include<conio.h>
intSequentialsearch(int[],int,int);
void main()
{
intx[20],i,n,p,key;
clrscr();
printf("\nEnterthenoofelement:");
scanf("%d",&n);
printf("\nEnter%delements:",n);
for(i=0;i<n;i++)
scanf("%d",&x[i]);
printf("\nEntertheelementtobesearch:");
scanf("%d",&key);
p=Sequentialsearch(x,n,key);
if(p==-1)
printf("\nThesearchisunsuccessful:\n");
else
printf("\n%disfoundatlocation%d",key,p);
getch();
}
intSequentialsearch(inta[],intn,intk)
{
int i;
for(i=0;i<n;i++)
{
if(k==a[i])
return(i);
}
return(-1);
}
Output:
32
Lab manual for Data Structure
14. Write a program to Search an element using binary search.
#include<stdio.h>
#include<conio.h>
intBinarysearch(int[],int,int);
void main()
{
intx[20],i,n,p,key;
clrscr();
printf("\nEnterthenoofelement:");
scanf("%d",&n);
printf("\nEnter%delementsinassendingorder:",n);
for(i=0;i<n;i++)
scanf("%d",&x[i]);
printf("\nEntertheelementtobesearch:");
scanf("%d",&key);
p=Binarysearch(x,n,key);
if(p==-1)
printf("\nThesearchisunsuccessful:\n");
else
printf("\n%disfoundatlocation%d",key,p);
getch();
}
intBinarysearch(inta[],intn,intk)
{
intlo,hi,mid;
lo=0;
hi=n-1;
while(lo<=hi)
{
mid=(lo+hi)/2;
if(k==a[mid])
return(mid);
if(k<a[mid])
hi=mid-1;
else
lo=mid+1;
}
return(-1);
}
33
Lab manual for Data Structure
Output:
34
Lab manual for Data Structure
15. Write a program to Arrange the list of numbers in ascending order using Bubble Sort.
#include<stdio.h>
#include<conio.h>
voidBubblesort(int[],int);
void main()
{
intx[20],i,n;
clrscr();
printf("\nEnterthenoofelementtobesorted:");
scanf("%d",&n);
printf("\nEnter%delements:",n);
for(i=0;i<n;i++)
scanf("%d",&x[i]);
Bubblesort(x,n);
printf("\nThesortedarrayis:\n");
for(i=0;i<n;i++)
printf("%4d",x[i]);
getch();
}
voidBubblesort(inta[],intn)
{
int temp,pass,i;
for(pass=0;pass<n-1;pass++)
{
for(i=0;i<n-pass-1;i++)
{
if(a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
}
35
Lab manual for Data Structure
Output:
36
Lab manual for Data Structure
16. Write a program to Arrange the list of numbers in ascending order using Insertion Sort.
#include<stdio.h>
#include<conio.h>
voidInsertionsort(int[],int);
void main()
{
intx[20],i,n;
clrscr();
printf("\nEnterthenoofelementtobesorted:");
scanf("%d",&n);
printf("\nEnter%delements:",n);
for(i=0;i<n;i++)
scanf("%d",&x[i]);
Insertionsort(x,n);
printf("\nThesortedarrayis:\n");
for(i=0;i<n;i++)
printf("%4d",x[i]);
getch();
}
voidInsertionsort(inta[],intn)
{
int i,j,key;
for(j=1;j<n;j++)
{
key=a[j];
i=j-1;
while((i>-1)&&(a[i]>key))
{
a[i+1]=a[i];
i=i-1;
}
a[i+1]=key;
}
}
37
Lab manual for Data Structure
Output:
38
Lab manual for Data Structure
17. Write a program to Arrange the list of numbers in ascending order using Selection Sort.
#include<stdio.h>
#include<conio.h>
voidSelectionsort(int[],int);
void main()
{
intx[20],i,n;
clrscr();
printf("\nEnterthenoofelementtobesorted:");
scanf("%d",&n);
printf("\nEnter%delements:",n);
for(i=0;i<n;i++)
scanf("%d",&x[i]);
Selectionsort(x,n);
printf("\nThesortedarrayis:\n");
for(i=0;i<n;i++)
printf("%4d",x[i]);
getch();
}
voidSelectionsort(inta[],intn)
{
int i,j,pos,large;
for(i=n-1;i>0;i--)
{
large=a[0];
pos=0;
for(j=1;j<=i;j++)
{
if (a[i]>large)
{
large=a[j];
pos=j;
}
}
a[pos]=a[i];
a[i]=large;
}
}
39
Lab manual for Data Structure
Output:
40
Lab manual for Data Structure
18. Write a program to Arrange the list of numbers in ascending order using Merge Sort.
#include<stdio.h>
#include<conio.h>
voidMergesort(int[],int,int);
void Merge(int[],int,int,int);
void main()
{
intx[20],i,n;
clrscr();
printf("\nEnterthenoofelementtobesorted:");
scanf("%d",&n);
printf("\nEnter%delements:",n);
for(i=0;i<n;i++)
scanf("%d",&x[i]);
Mergesort(x,0,n-1);
printf("\nThesortedarrayis:\n");
for(i=0;i<n;i++)
printf("%4d",x[i]);
getch();
}
voidMergesort(inta[],intp,intr)
{
int q;
if(p<r)
{
q=(p+r)/2;
Mergesort(a,p,q);
Mergesort(a,q+1,r);
Merge(a,p,q,r);
}
}
voidMerge(inta[],intp,intq,intr)
{
intb[20],l1,r1,i;
l1=p;
r1=q+1;
i=p;
while((l1<=q)&&(r1<=r))
{
if(a[l1]<a[r1])
{
b[i]=a[l1];
l1=l1+1;
i=i+1;
}
else
{
41
Lab manual for Data Structure
b[i]=a[r1];
r1=r1+1;
i=i+1;
}
}
while(l1<=q)
{
b[i]=a[l1];
l1=l1+1;
i=i+1;
}
while(r1<=r)
{
b[i]=a[r1];
r1=r1+1;
i=i+1;
}
for(i=p;i<=r;i++)
a[i]=b[i];
}
Output:
42
Lab manual for Data Structure
19. Write a program to Arrange the list of numbers in ascending order using Quick Sort.
#include<stdio.h>
#include<conio.h>
voidQuicksort(int[],int,int);
int partition(int[],int,int);
void main()
{
intx[20],i,n;
clrscr();
printf("\nEnterthenoofelementtobesorted:");
scanf("%d",&n);
printf("\nEnter%delements:",n);
for(i=0;i<n;i++)
scanf("%d",&x[i]);
Quicksort(x,0,n-1);
printf("\nThesortedarrayis:\n");
for(i=0;i<n;i++)
printf("%4d",x[i]);
getch();
}
voidQuicksort(inta[],intp,intr)
{
int q;
if(p<r)
{
q=Partition(a,p,r);
Quicksort(a,p,q);
Quicksort(a,q+1,r);
}
}
intPartition(inta[],intp,intr)
{
intk,i,j,temp;
k=a[p];
i=p-1;
j=r+1;
while(1)
{
do
{
j=j-1;
}while(a[j]>k);
do
{
i=i+1;
43
Lab manual for Data Structure
}while(a[i]<k);
if(i<j)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
else
return(j);
}
}
Output:
44
Lab manual for Data Structure
20. Write a program to Arrange the list of numbers in ascending order using Radix Sort.
#include<stdio.h>
#include<conio.h>
voidRadixsort(int[],int);
void main()
{
intx[20],i,n;
clrscr();
printf("\nEnterthenoofelementtobesorted:");
scanf("%d",&n);
printf("\nEnter%delements:",n);
for(i=0;i<n;i++)
scanf("%d",&x[i]);Radixsort(x,n);
printf("\nThesortedarrayis:\n");
for(i=0;i<n;i++)
printf("%4d",x[i]);
getch();
}
voidRadixsort(inta[],intn)
{
intbucket[10][10],buck[10];
inti,j,k,l,num,div,large,pass;
div=1;
num=0;
large=a[0];
for(i=0;i<n;i++)
{
if(a[i]>large)
large=a[i];
}
while(large>0)
{
num=num+1;
large=large/10;
}
for(pass=0;pass<num;pass++)
{
for(k=0;k<10;k++)
buck[k]=0;
for(i=0;i<n;i++)
{
l=(a[i]/div)%10;
bucket[l][buck[l]++]=a[i];
}
i=0;
for(k=0;k<10;k++)
{
45
Lab manual for Data Structure
for(j=0;j<buck[k];j++)
a[i++]=bucket[k][j];
}
div=div*10;
}
}
Output:
46
Lab manual for Data Structure
21. Write a program to Arrange the list of numbers in ascending order using Heap Sort.
#include<stdio.h>
#include<conio.h>
voidHeapsort(int[],int);
int Parent(int);
int Left(int);
intRight(int);
voidHeapify(int[],int,int);
void Buildheap(int[],int);
void main()
{
intx[20],i,n;
clrscr();
printf("\nEnterthenoofelementtobesorted:");
scanf("%d",&n);
printf("\nEnter%delements:",n);
for(i=0;i<n;i++)
scanf("%d",&x[i]);
Heapsort(x,n);
printf("\nThesortedarrayis:\n");
for(i=0;i<n;i++)
printf("%4d",x[i]);
getch();
}
intParent(inti)
{
return(i/2);
}
intLeft(int i)
{
return(2*i+1);
}
intRight(inti)
{
return(2*i+2);
}
voidHeapify(inta[],inti,intn)
{
intl,r,large,temp;
l=Left(i);
r=Right(i);
if((l<=n-1)&&(a[l]>a[i]))
large=l;
else
large=i;
47
Lab manual for Data Structure
if((r<=n-1)&&(a[r]>a[large]))
large=r;
if(large!=i)
{
temp=a[i];
a[i]=a[large];
a[large]=temp;
Heapify(a,large,n);
}
}
voidBuildheap(inta[],intn)
{
int i;
for(i=(n-1)/2;i>=0;i--)
Heapify(a,i,n);
}
voidHeapsort(inta[],intn)
{
int i,m,temp;
Buildheap(a,n);
m=n;
for(i=n-1;i>=1;i--)
{
temp=a[0];
a[0]=a[i];
a[i]=temp;
m=m-1;
Heapify(a,0,m);
}
}
Output:
48