You are on page 1of 65

A

PRACTICAL FILE

IN

ADVANCED DATA
STRUCTURE

SUBMITTED TO SUBMITTED BY

MR.SANDEEP RATHI Nikhil

LECTURER IN CSE/IT 48

ITS COLLEGE ECE (B) 3RD SEM.


INDEX

S.NO NAME PAGE DATE SIGN


NO.

1. BUBBLE SORT 1-3

2. INSERTION SORT 4-6

3. SELECTION SORT 7-9

4. QUICK SORT 10-12

5. HEAP SORT 13-16

6. RADIX SORT 17-20

7. MERGE SORT 21-23

8. STACK 24-27

9. QUEUE 28-31

10. LINKED LIST 32-37

11. TREE TRAVERSAL 38-43

12. BINARY TREE 44-50

13. SMALLEST,LARGEST & 2ND 51-53


LARGEST NO IN ARRAY

14. GRAPH TRAVERSAL 54-63

//WAP TO SORT AN ARRAY USING BUBBLE SORT//


#include<stdio.h>

#include<conio.h>

void main()

clrscr();

int arr[50],n,i,j;

printf("Enter desired array size(max. 50):");

scanf("%d",&n);

printf("\nEnter Array elements\n");

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

scanf("%d",&arr[i]);

int tmp;

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

for(j=0;j<n-1;j++)

if(arr[j]>arr[j+1])

tmp=arr[j];

arr[j]=arr[j+1];

arr[j+1]=tmp;

}
}

printf("\n\nThe sorted array is as shown:");

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

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

getch();

}
OUTPUT

//WAP TO SORT AN ARRAY USING INSERTION SORT//


#include<stdio.h>

#include<conio.h>

void main()

clrscr();

int arr[50],n,i;

printf("Enter desired array size(max. 50):");

scanf("%d",&n);

printf("\nEnter Array elements\n");

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

scanf("%d",&arr[i]);

int tmp,j;

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

tmp=arr[i];

j=i-1;

while(tmp<arr[j])

arr[j+1]=arr[j];

j--;

arr[j+1]=tmp;
}

printf("\n\nThe sorted array is as shown:");

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

printf("%d ",arr[i]);

getch();

}
OUTPUT

//WAP TO SORT AN ARRAY USING SELECTION SORT//


#include<stdio.h>

#include<conio.h>

void main()

clrscr();

int arr[50],n,i,j;

printf("Enter desired array size(max. 50):");

scanf("%d",&n);

printf("\nEnter Array elements\n");

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

scanf("%d",&arr[i]);

int small,pos,tmp;

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

small=arr[i];

pos=i;

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

if(arr[j]<small)

small=arr[j];

pos=j;
}

tmp=arr[i];

arr[i]=arr[pos];

arr[pos]=tmp;

printf("\n\nThe sorted array is as shown:");

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

printf("%d ",arr[i]);

getch();

}
OUTPUT

//WAP TO SORT AN ARRAY USING QUICK SORT//


#include<stdio.h>

#include<conio.h>

void bubblesort(int a[], int n);

void main()

int i, n, a[30];

clrscr();

printf("How many elements:");

scanf("%d", &n);

printf("Enter the elements:\n");

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

scanf("%d", &a[i]);

bubble sort(a,n);

getch();

void bubblesort(int a[], int n)

int i, pass, j, temp;

for(pass=0;pass<n-1;pass++)

for(j=0;j<n-pass;j++)

if(a[j]>a[j+1])
{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

printf("Sort elements are.....\n");

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

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

OUTPUT
//WAP TO SORT ARRAY USING HEAP SORT//
#include<stdio.h>

#include<conio.h>

void heap_create(int a[], int n);

void heap_sort(int a[], int n);

void main()

int i, n, a[30];

clrscr();

printf("How many elements:");

scanf("%d" , &n);

printf("Enter the elements\n");

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

scanf("%d", &a[i]);

heap_sort(a,n);

printf("Sorted elements are.....\n");

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

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

getch();

void heap_sort(int a[], int n)

int i ,j ,k, temp;


heap_create(a,n);

for(k=n;k>=2;k--)

temp=a[1];

a[1]=a[k];

a[k]=temp;

temp=a[1];

i=1;j=2;

if((j+1)<k)

if(a[j+1]>a[j])

j++;

while((j<=k-1)&&(a[j]>temp))

a[i]=a[j];

i=j;

j=2*i;

if((j+1)<k)

if(a[j+1]>a[j])

j++;

else

if(j>n)

j=n;

a[i]=temp;
}}}

void heap_create(int a[], int n)

int i, j, k, temp;

for(k=2;k<=n;k++)

j=k;

temp=a[k];

i=j/2;

while((j>1)&&(temp>a[i]))

a[j]=a[i];

j=i;

i=j/2;

if(i<1)

i=1;

a[j]=temp;

}}
OUTPUT
//WAP TO SORT ARRAY USING RADIX SORT//

#include<stdio.h>

#include<conio.h>

int a[100], n, i;

void main()

void radix_sort(int a[], int n);

clrscr();

printf("How many elements?\n");

scanf("%d", &n);

printf("Enter the elements:\n");

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

scanf("%d", &a[i]);

radix_sort(a,n);

printf("Sorted array:\n");

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

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

getch();

void radix_sort(int a[], int n)

int b[20][20],c[20];
int i, j, k, m, count, div, big, pass;

div=1;

count=0;

big=a[0];

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

if(a[i]>big)

big=a[i];

printf("Largest element in the list = %d\n",big);

while(big>0)

count++;

big=big/10;

printf("Total number of digits of the largest number= %d\n",count);

for(pass=0;pass<count;pass++)

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

c[k]=0;

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

m=(a[i]/div)%10;
b[m][c[m]++]=a[i];

printf("%d digit of number %d is %d\n" , pass+1, a[i], m);

i=0;

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

for(j=0;j<c[k];j++)

a[i++]=b[k][j];

printf("Now list is:");

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

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

printf("\n");

div*=10;

}}
OUTPUT

//WAP TO SORT AN ARRAY USING MERGE SORT//


#include<stdio.h>

#include<conio.h>

void main()

clrscr();

int A[50],B[50],C[50],mn=0,m,n,i;

printf("Enter desired first array size(max. 50):");

scanf("%d",&m);

printf("\nEnter First Array elements[Ascending]\n");

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

scanf("%d",&A[i]);

printf("Enter desired Second array size(max. 50):");

scanf("%d",&n);

printf("\nEnter Second Array elements[Descending]\n");

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

scanf("%d",&B[i]);

mn=m+n;

int x,y,z;

for(x=0,y=n-1,z=0;x<m && y>=0;)

if(A[x]<=B[y])

C[z++]=A[x++];
else

C[z++]=B[y--];

if(x<m)

while(x<m)

C[z++]=A[x++];

else

while(y>=0)

C[z++]=B[y--];

printf("\n\nThe merged array is as shown:");

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

printf("%d ",C[i]);

getch();

}
OUTPUT
//WAP FOR USING FUNCTIONS OF STACK//

#include<stdio.h>

#include<conio.h>

#include<process.h>

void main()

int ch,stack[10],max,item,i,top=0;

char ch1;

clrscr();

printf("enter the maximum value of stack:\t");

scanf("%d",&max);

do

printf("what you wanna do:\n");

printf("1.push\n");

printf("2.pop\n");

printf("3.display\n");

printf("4.exit\n");

printf("enter your choice\t");

scanf("%d",&ch);

switch(ch)

{
case 1:

if(top==max)

printf("OWERFLOWS!!!");

else

printf("\nenter the item for insertion:\t");

scanf("%d",&item);

top++;

stack[top]=item;

break;

case 2:

if(top==0)

printf("UNDERFLOWS!!!");

else

printf("\nthe item deleted is %d",stack[top]);

top--;

break;

case 3:

if(top==0)

printf("\nsoory no item to display\n");

else

printf("\nthe item list is as folllows:\t");

for(i=top;i>=1;i--)

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

break;

case 4:

exit(0);

printf("\nDo you wanna continue(y/n)\t");

fflush(stdin);

scanf("%c",&ch1);

while(ch1=='y'||ch1=='Y');

getch();

OUTPUT
//WAP TO USE FUNCTIONS OF QUEUE//
#include<stdio.h>

#include<conio.h>

#include<process.h>

void main()

int ch,queue[10],max,item,i,front=0,rear=0;

char ch1;

clrscr();

printf("enter the maximum value of queue:\t");

scanf("%d",&max);

do

printf("what you wanna do:\n");

printf("1.insertion\n");

printf("2.deletion\n");

printf("3.display\n");

printf("4.exit\n");

printf("enter your choice\t");

scanf("%d",&ch);

switch(ch)

case 1:
if(front==1&&rear==max)

printf("OWERFLOWS!!!");

else if(front==0)

front=rear=1;

else

rear=rear+1;

printf("\nenter the item for insertion:\t");

scanf("%d",&item);

queue[rear]=item;

break;

case 2:

if(front==0)

printf("UNDERFLOWS!!!");

else

item=queue[front];

if(front==rear)

front=rear=0;

else

front=front+1;

printf("\nthe item deleted is %d",item);

break;

case 3:

if(front==0)
printf("\nsoory no item to display\n");

else

printf("\nthe item list is as folllows:\t");

for(i=front;i<=rear;i++)

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

break;

case 4:

exit(0);

printf("\nDo you wanna continue(y/n)\t");

fflush(stdin);

scanf("%c",&ch1);

while(ch1=='y'||ch1=='Y');

getch();

}
OUTPUT

//WAP TO CREATE A LINKED LIST//


#include<stdio.h>

#include<conio.h>

#include<process.h>

struct node

int info;

node *next;

}*start,*newptr,*save,*ptr,*rear;

node*create(int);

void insert(node *);

void delet();

void display(node *);

int inf;

char ch='y';

void func()

char c;

printf("Want insertion(i),deletion(d) or exit(e):");

fflush(stdin);

scanf("%c",&c);

switch(c)

{
case 'i':do

printf("\nEnter information for new node:");

scanf("%d",&inf);

newptr=create(inf);

if(newptr==NULL)

printf("\nCANNOT CREATE NEW NODE!!!");

getch();

exit(1);

insert(newptr);

printf("\nPrees y to enter more nodes,n to exit:");

fflush(stdin);

scanf("%c",&ch);

}while(ch=='y'||ch=='Y');

printf("\n");

break;

case 'd':do

printf("\n the list now is:\n");

display(start);

getch();
printf("want to delete first node?(y/n):");

fflush(stdin);

scanf("%c",&ch);

if(ch=='y'||ch=='Y')

delet();

}while(ch=='y'||ch=='Y');

break;

case 'e':exit(0);

default:printf("SOORY WRONG CHOICE!!!");

func();

void main()

clrscr();

start=rear=NULL;

func();

getch();

node *create(int n)

ptr=new node;

ptr->info=n;
ptr->next=NULL;

return ptr;

void insert(node *np)

if(start==NULL)

start=rear=np;

else

{ rear->next=np;

rear=np;

void delet()

if(start==NULL)

printf("UNDERFLOW!!!\n");

else

{ ptr=start;

start=start->next;

delete ptr;

void display(node *np)


{

while(np!=NULL)

printf("%d->",np->info);

np=np->next;

printf("!!!\n");

OUTPUT
//WAP TO SHOW TREE TRAERSAL//
#include<stdio.h>

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

struct node

int data;

node *left;

node *right;

};

node *tree=NULL;

node *insert(node *tree,int ele);

void preorder(node *tree);

void inorder(node *tree);

void postorder(node *tree);

int count=1;

void main()

clrscr();

int ch,ele;
do

clrscr();

printf("\n1----INSERT A NODE IN A BINARY TREE.");

printf("\n2----PRE-ORDER TRAVERSAL.");

printf("\n3----IN-ORDER TRAVERSAL.");

printf("\n4----POST-ORDER TRAVERSAL.");

printf("\n5----EXIT.");

printf("\nENTER CHOICE:");

scanf("%d",&ch);

switch(ch)

case 1:

printf("\nENTER THE ELEMENT:");

scanf("%d",&ele);

tree=insert(tree,ele);

break;

case 2:

printf("\nPRE-ORDER TRAVERSAL OF A TREE\n");

preorder(tree);

break;
case 3:

printf("\nIN-ORDER TRAVERSAL OF A TREE\n");

inorder(tree);

break;

case 4:

printf("\nPOST-ORDER TRAVERSAL OF A TREE\n");

postorder(tree);

break;

case 5:

exit(0);

}while(ch!=5);

node *insert(node *tree,int ele)

if(tree==NULL)

tree=new node;

tree->left=tree->right=NULL;

tree->data=ele;
count++;

else

if(count%2==0)

tree->left=insert(tree->left,ele);

else

tree->right=insert(tree->right,ele);

return(tree);

void preorder(node *tree)

if(tree!=NULL)

printf("%d\n",tree->data);

preorder(tree->left);

preorder(tree->right);

getch();

void inorder(node *tree)

{
if(tree!=NULL)

inorder(tree->left);

printf("%d\n",tree->data);

inorder(tree->right);

getch();

void postorder(node *tree)

if(tree!=NULL)

postorder(tree->left);

postorder(tree->right);

printf("%d\n",tree->data);

getch();

getch();

OUTPUT
//WAP TO SHOW BINARY TREE//
#include<stdio.h>

#include<conio.h>

#include<alloc.h>

struct tree

int data;

tree *left;

tree *right;

}*sptr,*q;

void rightcheck();

void leftcheck();

void search();

int insdata;

tree *node;

void main()

clrscr();

node=new tree;

printf(" PLEASE PUT THE root->>)");

scanf("%d",&node->data);
sptr=node;

q=sptr;

node->left=NULL;

node->right=NULL;

printf(" GIVE THE child->>)");

scanf("%d",&insdata);

search();

while(insdata!=0)

if(insdata>sptr->data)

rightcheck();

else

leftcheck();

printf(" GIVE THE child->>)");

scanf("%d",&insdata);

search();

sptr=node;

getch();

void rightcheck()

if(sptr->right==NULL)
{

printf("%d IS THE RIGHT child of %d\n",insdata,q->data);

sptr->right=new tree;

sptr=sptr->right;

sptr->data=insdata;

sptr->left=NULL;

sptr->right=NULL;

q=node;

else

if(insdata>sptr->data)

sptr=sptr->right;

q=sptr;

if(insdata>sptr->data)

rightcheck();

else

leftcheck();

else

sptr=sptr->left;
q=sptr;

leftcheck();

void leftcheck()

if(sptr->left==NULL)

printf("%d IS THE LEFT child of %d\n",insdata,q->data);

sptr->left=new tree;

sptr=sptr->left;

sptr->data=insdata;

sptr->right=NULL;

sptr->left=NULL;

q=node;

else{

if(insdata<sptr->data)

sptr=sptr->left;

q=sptr;

if(insdata>sptr->data)
rightcheck();

else

leftcheck();

else

sptr=sptr->right;

q=sptr;

rightcheck();}

void search()

sptr=node;

while(sptr!=NULL)

if(insdata==sptr->data)

printf("This is not insertable.");

printf("\nInsert child ");

scanf("%d",&insdata);

search();
break;

else

if(insdata>sptr->data)

sptr=sptr->right;

else

sptr=sptr->left;

sptr=node;

getch();

OUTPUT
//WAP TO FIND OUT SMALLEST,LARGEST & 2ND LARGEST NO IN ARRAY//
#include<stdio.h>

#include<conio.h>

void main()

clrscr();

int a[10],i,n,small,max,max1;

printf("enter the size of array:");

scanf("%d",&n);

printf("enter the elements:\n");

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

scanf("%d",&a[i]);

small=a[0];

max=a[0];

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

if(small>a[i])

small=a[i];

if(max<a[i])
{

max1=max;

max=a[i];

printf("the smallest no is:%d\n",small);

printf("the maximum no is:%d\n",max);

printf("the 2nd maximum no is:%d\n",max1);

getch();

OUTPUT
//WAP TO GRAPH TRAVERSAL//

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

void create();

void dfs();

void bfs();

struct node

int data,status;

struct node *next;

struct link *adj;

};

struct link

struct node *next;

struct link *adj;

};
struct node *start,*p,*q;

struct link *l,*k;

int main()

int choice;

clrscr();

create();

while(1)

printf("\n1: DFS\n2: BSF \n3: Exit\nEnter your choice: ");

scanf("%d",&choice);

switch(choice)

case 1:

dfs();

break;

case 2:

bfs();

break;

case 3:

exit(0);

break;
default:

printf("Incorrect choice! \nRe-enter your choice:");

getch();

void create()

int dat,flag=0;

start=NULL;

printf("Enter the nodes in the graph(0 to end): ");

while(1)

scanf("%d",&dat);

if(dat==0)

break;

p=new node;

p->data=dat;

p->status=0;

p->next=NULL;

p->adj=NULL;

if(flag==0)
{

start=p;

q=p;

flag++;

else

q->next=p;

q=p;

p=start;

while(p!=NULL)

printf("Enter the links to %d (0 to end):",p->data);

flag=0;

while(1)

scanf("%d",&dat);

if(dat==0)

break;

k=new link;

k->adj=NULL;
if(flag==0)

p->adj=k;

l=k;

flag++;

else

l->adj=k;

l=k;

q=start;

while(q!=NULL)

if(q->data==dat)

k->next=q;

q=q->next;

p=p->next;

return;

}
void bfs()

int qu[20],i=1,j=0;

p=start;

while(p!=NULL)

p->status=0;

p=p->next;

p=start;

qu[0]=p->data;

p->status=1;

while(1)

if(qu[j]==0)

break;

p=start;

while(p!=NULL)

if(p->data==qu[j])

break;

p=p->next;

}
k=p->adj;

while(k!=NULL)

q=k->next;

if(q->status==0)

qu[i]=q->data;

q->status=1;

qu[i+1]=0;

i++;

k=k->adj;

j++;

j=0;

printf("Breadth First Search Results ");

while(qu[j]!=0)

printf("%d ",qu[j]);

j++;

getch();
return;

void dfs()

int stack[25],top=1;

printf("Deapth First Search Results ");

p=start;

while(p!=NULL)

p->status=0;

p=p->next;

p=start;

stack[0]=0;

stack[top]=p->data;

p->status=1;

while(1)

if(stack[top]==0)

break;

p=start;

while(p!=NULL)

{
if(p->data==stack[top])

break;

p=p->next;

printf("%d ",stack[top]);

top--;

k=p->adj;

while(k!=NULL)

q=k->next;

if(q->status==0)

top++;

stack[top]=q->data;

q->status=1;

k=k->adj;

getch();

return;

OUTPUT

You might also like