Showing posts with label Double Ended Restricted Queue. Show all posts
Showing posts with label Double Ended Restricted Queue. Show all posts

Saturday, June 4, 2016

WAP to implement Double Ended Restricted Queue

#include<stdio.h>
#include<conio.h>
int dq[5],r=-1,f=-1,r2=5,f2=5,max=5;
void insertr(int x)
{
if(r==max-1)
{
printf("Queue is full");
return;
}
r++;
dq[r]=x;
if(f==-1)
f=0;
r2=f;
f2=r;
}
int deletel()
{
int x;
if(f==-1)
{
printf("Queue is empty");
}
else
{
x=dq[f];
if(f==r)
{
f=r=-1;
f2=r2=max;
}
else
{
f++;
f2=r;
r2=f;
}
return x;
}
}
void insertl(int x)
{
if(r2==0)
{
printf("Queue is full");
return;
}
r2--;
dq[r2]=x;
if(f2==max)
f2=max-1;
r=f2;
f=r2;
}
int deleter()
{
int x;
if(f2==max)
{
printf("Queue is empty");
}
else
{
x=dq[f2];
if(f2==r2)
{
f=r=-1;
f2=r2=max;
}
else
{
f2--;
f=r2;
r=f2;
}
return x;
}
}
void display()
{
int i;
if(f==-1)
{
printf("\nQueue is empty");
return;
}
printf("\n Values in queue are:\n");
for(i=f;i<=r;i++)
{
printf("|%d| ",dq[i]);
}
}
void main()
{
int n,x,res,typ;
clrscr();
printf("\n1. Input restricted");
printf("\n2.Output Restricted");
printf("\nEnter restriction type:");
scanf("%d",&res);
switch(res)
{
case 1:
printf("\n1. Restrict Right Side");
printf("\n2. Restrict Left Side");
printf("\nEnter your Choice: ");
scanf("%d",&typ);
switch(typ)
{
case 1:
do
{
printf("\n1.Insert form Left ");
printf("\n2.Delete from left ");
printf("\n3.Delete form Right");
printf("\n4.display ");
printf("\n5.exit");
printf("\nEnter your choice :");
scanf("%d",&n);
switch(n)
{
case 1:
printf("\nEnter value :");
scanf("%d",&x);
insertl(x);
break;
case 2:
x=deletel();
printf("\n Deleted value is %d",x);
break;
case 3:
x=deleter();
printf("\n Deleted value is %d",x);
break;
case 4:
display();
break;
case 5:
printf("\nThank you");
break;
default:
printf("\nInvalid choice");
}

}while(n!=5);
break;
case 2:
do
{
printf("\n1.Insert form Right ");
printf("\n2.Delete from left ");
printf("\n3.Delete form Right ");
printf("\n4.display ");
printf("\n5.exit");
printf("\nEnter your choice :");
scanf("%d",&n);
switch(n)
{
case 1:
printf("\nEnter value :");
scanf("%d",&x);
insertr(x);
break;
case 2:
x=deletel();
printf("\n Deleted value is %d",x);
break;
case 3:
x=deleter();
printf("\n Deleted value is %d",x);
break;
case 4:
display();
break;
case 5:
printf("\nThank you");
break;
default:
printf("\nInvalid choice");
}

}while(n!=5);
break;

}
break;
case 2:
printf("\n1. Restrict Right side");
printf("\n2. Restrict Left Side");
printf("\nEnter your Choice: ");
scanf("%d",&typ);
switch(typ)
{
case 1:
do
{
printf("\n1.Insert form Right ");
printf("\n2.Insert form Left ");
printf("\n3.Delete from left ");
printf("\n4.display ");
printf("\n5.exit");
printf("\nEnter your choice :");
scanf("%d",&n);
switch(n)
{
case 1:
printf("\nEnter value :");
scanf("%d",&x);
insertr(x);
break;
case 2:
printf("\nEnter value :");
scanf("%d",&x);
insertl(x);
break;
case 3:
x=deletel();
printf("\n Deleted value is %d",x);
break;
case 4:
display();
break;
case 5:
printf("\nThank you");
break;
default:
printf("\nInvalid choice");
}

}while(n!=5);
break;
case 2:
do
{
printf("\n1.Insert form Right ");
printf("\n2.Insert form Left ");
printf("\n3.Delete form Right ");
printf("\n4.display ");
printf("\n5.exit");
printf("\nEnter your choice :");
scanf("%d",&n);
switch(n)
{
case 1:
printf("\nEnter value :");
scanf("%d",&x);
insertr(x);
break;
case 2:
printf("\nEnter value :");
scanf("%d",&x);
insertl(x);
break;
case 3:
x=deleter();
printf("\n Deleted value is %d",x);
break;
case 4:
display();
break;
case 5:
printf("\nThank you");
break;
default:
printf("\nInvalid choice");
}

}while(n!=5);
break;

}
break;
}
getch();
}