MAYANK ARORA
18070124040
SY IT
Priority Queue:
#include<stdio.h>
#define MAX 5
int front=-1,rear=-1;
char pqdata[MAX];
int pqpri[MAX];
void insert()
{
int pr,element,i;
if(front==0&&rear==MAX-1)
{
printf("\nFull\n\n");
}
else
{
printf("\nEnter Element and its Priority:");
fflush(stdin);
scanf("%c%d",&element,&pr);
if(front==-1)
{
front=0;rear=0;
pqdata[rear]=element;
pqpri[rear]=pr;
}
else if(rear==MAX-1)
{
for(i=front;i<=rear;i++)
{
pqdata[i-front]=pqdata[i];
pqpri[i-front]=pqpri[i];
rear=rear-front;
front=0;
for(i=rear;i>=front;i--)
{
if(pr>pqpri[i])
{
pqdata[i+1]=pqdata[i];
pqpri[i+1]=pqpri[i];
}
else
{
break;
}
pqdata[i+1]=element;
pqpri[i+1]=element;
rear++;
}
}
}
else
{
for(i=rear;i>=front;i--)
{
if(pr>pqpri[i])
{
pqdata[i+1]=pqdata[i];
pqpri[i+1]=pqpri[i];
}
else
{
break;
}
}
pqdata[i+1]=element;
pqpri[i+1]=pr;
rear++;
}
}
}
void del()
{
if(front==-1)
{
printf("\nQueue is Empty\n\n");
}
else if(front==rear)
{
front=rear=-1;
}
else
{
printf("\nDeleted Element:%c",pqdata[front]);
front++;
printf("\n\n");
}
}
void display()
{
int i;
printf("\nElements in Queue are:\n\n");
printf("\nElement\tPriority\n\n");
for(i=front;i<=rear;i++)
{
printf("%c\t%d\n",pqdata[i],pqpri[i]);
}
printf("\n\n");
}
main()
{
int choice,j=0;
printf("[Link]\n");
printf("[Link]\n");
printf("[Link]\n");
printf("[Link]\n");
printf("\nEnter your Choice:");
scanf("%d",&choice);
switch(choice)
{
case 1:
while(j<MAX)
{
j++;
insert();
}
return main();
case 2:
del();
return main();
case 3:
display();
return main();
case 4:
break;
}
}
Multi Queue:
#include<stdio.h>
#define MAX 6
int front1=-1,rear1=-1;
int front2=MAX,rear2=MAX;
int data[20];
void insert1(int num)
{
if(rear1<rear2-1)
{
if(front1==-1)
{
front1=0;
}
rear1++;
data[rear1]=num;
}
else
{
printf("\nQueue 1 is Full\n\n");
}
}
void insert2(int num)
{
if (rear1<rear2-1)
{
if(front2==MAX)
{
front2=MAX-1;
}
rear2--;
data[rear2]=num;
}
else
{
printf("\nQueue 2 is Full\n\n");
}
}
void delete1()
{
if(front1<rear1)
{
printf("\n%d has been deleted\n\n",data[front1]);
front1++;
}
}
void delete2()
{
if (front2>rear2)
{
printf("\n%d has been deleted\n\n",data[front2]);
front2--;
}
}
main()
{
int choice,num,i;
printf("[Link] in Queue 1\[Link] in Queue 1\[Link] In Queue 2\[Link] in
Queue 2\[Link] Queue 1\[Link] Queue 2");
printf("\n\nEnter your Choice:");
scanf("%d",&choice);
switch (choice)
{
case 1:
printf("\nEnter Element:");
scanf("%d",&num);
insert1(num);
return main();
case 2:
delete1();
return main();
case 3:
printf("\nEnter Element:");
scanf("%d",&num);
insert2(num);
return main();
case 4:
delete2();
return main();
case 5:
for (i=front1;i<=rear1;i++)
printf("%d\t",data[i]);
printf("\n\n");
return main();
case 6:
for (i=front2;i>=rear2;i--)
printf("%d\t",data[i]);
printf("\n\n");
return main();
case 7:
break;
}
}