0% found this document useful (0 votes)
14 views17 pages

C Program for Priority and Multi Queue

Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views17 pages

C Program for Priority and Multi Queue

Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

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;

}
}

You might also like