Professional Documents
Culture Documents
PRACTICAL FILE
IN
ADVANCED DATA
STRUCTURE
SUBMITTED TO SUBMITTED BY
LECTURER IN CSE/IT 48
8. STACK 24-27
9. QUEUE 28-31
#include<conio.h>
void main()
clrscr();
int arr[50],n,i,j;
scanf("%d",&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;
}
}
for(i=0;i<n;i++)
printf("%d\t",arr[i]);
getch();
}
OUTPUT
#include<conio.h>
void main()
clrscr();
int arr[50],n,i;
scanf("%d",&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;
}
for(i=1;i<=n;i++)
printf("%d ",arr[i]);
getch();
}
OUTPUT
#include<conio.h>
void main()
clrscr();
int arr[50],n,i,j;
scanf("%d",&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;
for(i=0;i<n;i++)
printf("%d ",arr[i]);
getch();
}
OUTPUT
#include<conio.h>
void main()
int i, n, a[30];
clrscr();
scanf("%d", &n);
for(i=0;i<n;i++)
scanf("%d", &a[i]);
bubble sort(a,n);
getch();
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;
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 main()
int i, n, a[30];
clrscr();
scanf("%d" , &n);
for(i=1;i<=n;i++)
scanf("%d", &a[i]);
heap_sort(a,n);
for(i=1;i<=n;i++)
printf("%5d", a[i]);
getch();
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;
}}}
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()
clrscr();
scanf("%d", &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();
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];
while(big>0)
count++;
big=big/10;
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];
i=0;
for(k=0;k<10;k++)
for(j=0;j<c[k];j++)
a[i++]=b[k][j];
for(i=0;i<n;i++)
printf("%6d", a[i]);
printf("\n");
div*=10;
}}
OUTPUT
#include<conio.h>
void main()
clrscr();
int A[50],B[50],C[50],mn=0,m,n,i;
scanf("%d",&m);
for(i=0;i<m;i++)
scanf("%d",&A[i]);
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&B[i]);
mn=m+n;
int x,y,z;
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--];
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();
scanf("%d",&max);
do
printf("1.push\n");
printf("2.pop\n");
printf("3.display\n");
printf("4.exit\n");
scanf("%d",&ch);
switch(ch)
{
case 1:
if(top==max)
printf("OWERFLOWS!!!");
else
scanf("%d",&item);
top++;
stack[top]=item;
break;
case 2:
if(top==0)
printf("UNDERFLOWS!!!");
else
top--;
break;
case 3:
if(top==0)
else
for(i=top;i>=1;i--)
{
printf("%d\t",stack[i]);
break;
case 4:
exit(0);
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();
scanf("%d",&max);
do
printf("1.insertion\n");
printf("2.deletion\n");
printf("3.display\n");
printf("4.exit\n");
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;
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;
break;
case 3:
if(front==0)
printf("\nsoory no item to display\n");
else
for(i=front;i<=rear;i++)
printf("%d\t",queue[i]);
break;
case 4:
exit(0);
fflush(stdin);
scanf("%c",&ch1);
while(ch1=='y'||ch1=='Y');
getch();
}
OUTPUT
#include<conio.h>
#include<process.h>
struct node
int info;
node *next;
}*start,*newptr,*save,*ptr,*rear;
node*create(int);
void delet();
int inf;
char ch='y';
void func()
char c;
fflush(stdin);
scanf("%c",&c);
switch(c)
{
case 'i':do
scanf("%d",&inf);
newptr=create(inf);
if(newptr==NULL)
getch();
exit(1);
insert(newptr);
fflush(stdin);
scanf("%c",&ch);
}while(ch=='y'||ch=='Y');
printf("\n");
break;
case 'd':do
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);
func();
void main()
clrscr();
start=rear=NULL;
func();
getch();
node *create(int n)
ptr=new node;
ptr->info=n;
ptr->next=NULL;
return ptr;
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;
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;
int count=1;
void main()
clrscr();
int ch,ele;
do
clrscr();
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:
scanf("%d",&ele);
tree=insert(tree,ele);
break;
case 2:
preorder(tree);
break;
case 3:
inorder(tree);
break;
case 4:
postorder(tree);
break;
case 5:
exit(0);
}while(ch!=5);
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);
if(tree!=NULL)
printf("%d\n",tree->data);
preorder(tree->left);
preorder(tree->right);
getch();
{
if(tree!=NULL)
inorder(tree->left);
printf("%d\n",tree->data);
inorder(tree->right);
getch();
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;
scanf("%d",&node->data);
sptr=node;
q=sptr;
node->left=NULL;
node->right=NULL;
scanf("%d",&insdata);
search();
while(insdata!=0)
if(insdata>sptr->data)
rightcheck();
else
leftcheck();
scanf("%d",&insdata);
search();
sptr=node;
getch();
void rightcheck()
if(sptr->right==NULL)
{
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)
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)
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;
scanf("%d",&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];
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 link
};
struct node *start,*p,*q;
int main()
int choice;
clrscr();
create();
while(1)
scanf("%d",&choice);
switch(choice)
case 1:
dfs();
break;
case 2:
bfs();
break;
case 3:
exit(0);
break;
default:
getch();
void create()
int dat,flag=0;
start=NULL;
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)
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;
while(qu[j]!=0)
printf("%d ",qu[j]);
j++;
getch();
return;
void dfs()
int stack[25],top=1;
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