0% found this document useful (0 votes)
6 views48 pages

Data Structure Lab Manual

This lab manual for Data Structures includes various programming exercises focused on fundamental concepts such as arrays, matrices, linked lists, queues, and sorting algorithms. Each experiment is accompanied by sample code and expected outputs, providing practical applications of data structure principles. The manual is intended for students in the Department of Computer Science and Engineering at Jahangirabad Institute of Technology.

Uploaded by

try.ansshhh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views48 pages

Data Structure Lab Manual

This lab manual for Data Structures includes various programming exercises focused on fundamental concepts such as arrays, matrices, linked lists, queues, and sorting algorithms. Each experiment is accompanied by sample code and expected outputs, providing practical applications of data structure principles. The manual is intended for students in the Department of Computer Science and Engineering at Jahangirabad Institute of Technology.

Uploaded by

try.ansshhh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 48

LAB MANUAL

FOR
DATASTRUCTURE

Prepared by

…………….......

Lecturer

………….......

DEPARTMENTOFCOMPUTERSCIENCE&ENGINEERING

JAHANGIRABAD INSTITUTE OF TECHNOLOGY


JAHANGIRABAD QILA, BARABANKI, UP, INDIA
S. No. Experiments Date Sign.

1 Write a program to demonstrate the concept of one dimensional array


finding the sum of array elements

2 Write a program to insert an element in an array.

3 Write a program to delete an element from an array

4 Write a program to add two matrix A and B

5 Write a program to multiply two matrix A and B

6 Write a program to copy a string into another string

7 Write a program to Implementation of linked list using array

8 Write a program to Implementation of linked list using array

9 Write a program to Calculate factorial of a number using recursive


function

10 Write a program to Implementation of queue using array

11 Write a program to Implementation of circular queue using array

12 Write a program to Implementation of binary search tree using array

13 Write a program to Search an element using sequential search

14 Write a program to Search an element using binary search

15 Write a program to Arrange the list of numbers in ascending order using


Bubble Sort

16 Write a program to Arrange the list of numbers in ascending order using


Insertion Sort

17 Write a program to Arrange the list of numbers in ascending order using


Selection Sort

18 Write a program to Arrange the list of numbers in ascending order using


Merge Sort

19 Write a program to Arrange the list of numbers in ascending order using


Quick Sort

20 Write a program to Arrange the list of numbers in ascending order using


Radix Sort

21 Write a program to Arrange the list of numbers in ascending order using


Heap Sort
Lab manual for Data Structure
1. Write a program to demonstrate the concept of 1-dimensional array finding the sum of array elements.

#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

2. Write a program to insert an element in an array.

#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

3. Write a program to delete an element from an array.

#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

4. Write a program to add two matrix A and B.


#include<stdio.h>
#include<conio.h>
void main()
{
int i,j,m,n,p,q;
inta[10][10],b[10][10],c[10][10];
clrscr();
printf("\nEnternoofrowsandcolumnofmatrixA:");
scanf("%d%d",&m,&n);
printf("\nEnternoofrowsandcolumnofmatrixB:");
scanf("%d%d",&p,&q);
if(m!=p&&n!=q)
{
printf("\nMatrixcannotbeadded.");
exit(0);
}
printf("\n Matrix can be added");
printf("\nEnterelementsofmatrixA:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
printf("\nEnterelementsofmatrixB:");
for(i=0;i<p;i++)
for(j=0;j<q;j++)
scanf("%d",&b[i][j]);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
c[i][j]=a[i][j]+b[i][j];
printf("\nDisplaymatrixA:\n");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
printf("\nDisplaymatrixB:\n");
for(i=0;i<p;i++)
{
for(j=0;j<q;j++)
printf("%d\t",b[i][j]);
printf("\n");
}
printf("\nDisplaymatrixC:\n");
for(i=0;i<p;i++)
6
Lab manual for Data Structure
{
for(j=0;j<q;j++)
printf("%d\t",c[i][j]);
printf("\n");
}
getch();
}
Output:

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

6. Write a program to copy a string into another string.

#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

9. Write a program to Calculate factorial of a number using recursive function.

#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

10. Write a program to Implementation of queue using array.


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>#
defineMAXQ100
int front=0,rear=-1;
int items[MAXQ];
int Isempty();
int
Isfull();voidIns
ert(int); int
Delete(); void
Display(); void
main()
{
intx;
char ch='1';
clrscr();
while(ch!='4')
{
printf("\n 1-INSERT");
printf("\n 2-DELETE");
printf("\n3-DISPLAY");
printf("\n 4-QUIT");
printf("\nEnteryourchoice:");
fflush(stdin);
ch=getchar();
switch(ch)
{
case '1':
printf("\nEntertheelementtobeinserted:");
scanf("%d",&x);
Insert(x);
break;
case '2':
x=Delete();
printf("\nDeleteelementis%d\n:",x);
break;
case '3':
Display();
break;
case '4':
break;
default:
printf("\nWrongchoice!Tryagain:");
}
20
Lab manual for Data Structure
}
getch();
}
intIsempty()
{
if(rear<front)
return 1;
else
return0;
}
intIsfull()
{
if(rear==MAXQ-1)
return 1;
else
return0;
}
voidInsert(intx)
{
if(Isfull())
{
printf("\nQueuefull");
return;
}
rear++;
items[rear]=x;
}
intDelete()
{
int x;
if(Isempty())
{
printf("\nQueueisempty");
exit(0);
}
x=items[front];
front++;
returnx;
}
voidDisplay()
{
int i;
if(Isempty())
{
printf("\nQueueisempty");
return;
}
printf("\nElementsintheQueueare:\n");
for(i=front;i<=rear;i++)
21
Lab manual for Data Structure
printf("%d\n",items[i]);
}

Output:

22
Lab manual for Data Structure

23
Lab manual for Data Structure

11. Write a program to Implementation of circular queue using array.


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>#
defineMAXQ100
intfront=-1,rear=-1;
int items[MAXQ];
int Isempty();
int
Isfull();voidIns
ert(int); int
Delete(); void
Display(); void
main()
{
intx;
char ch='1';
clrscr();
while(ch!='4')
{
printf("\n 1-INSERT");
printf("\n 2-DELETE");
printf("\n3-DISPLAY");
printf("\n 4-QUIT");
printf("\nEnteryourchoice:");
fflush(stdin);
ch=getchar();
switch(ch)
{
case '1':
printf("\nEnterthenosofelementtobeinserted:");
scanf("%d",&x);
Insert(x);
break;
case '2':
x=Delete();
printf("\nDeletedelementis%d\n:",x);
break;
case '3':
Display();
break;
case '4':
break;
default:
printf("\nWrongchoice!Tryagain:");
}
24
Lab manual for Data Structure
}
getch();
}
intIsempty()
{
if(front==-1)
return 1;else
return0;
}
intIsfull()
{
if(front==(rear+1)%MAXQ)
return 1;
else
return0;
}
voidInsert(intx)
{
if(Isfull())
{
printf("\nQueuefull");
return;
}
if(front==-1)
{
front=0;
rear=0;
}
else
rear=(rear+1)%MAXQ;
items[rear]=x;
}
intDelete()
{
int x;
if(Isempty())
{
printf("\nQueueisempty");
exit(0);
}
x=items[front];
if(front==rear)
{
front=-1;
rear=-1;
}
else
front=(front+1)%MAXQ;
return x;
25
Lab manual for Data Structure
}
voidDisplay()
{
int i,n;
if(Isempty())
{
printf("\nQueueisempty");
return;
}
printf("\nElementsintheQueueare:\n");
if(front<=rear)
{
for(i=front;i<=rear;i++)
printf("%d\n",items[i]);
}
else
{
for(i=front;i<=MAXQ-1;i++)
printf("%d\n",items[i]);
for(i=0;i<=rear;i++)
printf("%d\n",items[i]);
}
}

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

You might also like