0% found this document useful (0 votes)
43 views65 pages

Ads File

The document contains a practical file on advanced data structures submitted by a student. It includes programs and outputs for sorting arrays using different algorithms like bubble sort, insertion sort, selection sort, quick sort, heap sort, radix sort and merge sort. It also includes programs on using functions of stack and queue.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
43 views65 pages

Ads File

The document contains a practical file on advanced data structures submitted by a student. It includes programs and outputs for sorting arrays using different algorithms like bubble sort, insertion sort, selection sort, quick sort, heap sort, radix sort and merge sort. It also includes programs on using functions of stack and queue.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 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