📄 2qa.c
字号:
//To perform operations on two queues using single array depending on user's choice.
#include<stdio.h>
int n;
typedef struct
{
int front1,rear1,front2,rear2;
int ele[10];
}queue;
queue q;
int fullqueue(queue *);
void insert(queue *,int,int);
int delete(queue *,int);
int emptyqueue(queue *);
int queuesize(queue *);
void main()
{
int num,ch,qs,cho;
char c;
clrscr();
printf("ENTER THE CAPACITY OF THE QUEUE\n");
scanf("%d",&n);
q.front1=q.rear1=-1;
q.rear2=q.front2=n;
do
{
printf("------------OPERATIONS ON THE QUEUE----------\n");
printf("1-----INSERTION\n");
printf("2-----DELETION\n");
printf("3-----PEEP\n");
printf("4-----QUEUESIZE\n");
printf("5-----EXIT\n");
printf("WHICH OPERATION WOULD U LYK TO PRFORM ON QUEUE ?\n");
scanf("%d",&ch);
switch(ch)
{
case 1:
printf("*****INSERT AN ELEMENT IN THE QUEUE*****\n");
if(fullqueue(&q))
printf("THE QUEUE IS FULL....\n");
else
{
printf("1----INSERTION AT END\n");
printf("2----INSERTION AT BEGINNING\n");
printf("ENTER YOUR CHOICE\n");
scanf("%d",&cho);
printf("ENTER ANY ELEMENT\n");
scanf("%d",&num);
insert(&q,num,cho);
}
break;
case 2:
printf("*****DELETE AN ELEMENT*****\n");
if(emptyqueue(&q))
printf("QUEUE IS EMPTY\n");
else
{
printf("1-----DELETION AT END\n");
printf("2-----DELETION AT BEGINNING\n");
printf("ENTER YOUR CHOICE\n");
scanf("%d",&cho);
num=delete(&q,cho);
printf("THE DELETED ELEMENT IS %d\n",num);
}
break;
case 3:
printf("*****PEEP AN ELEMENT IN THE QUEUE*****\n");
if(emptyqueue(&q))
printf("THE QUEUE IS EMPTY\n");
else
{
printf("1-----PEEP THE FIRST ELEMENT\n");
printf("2-----PEEP THE LAST ELEMENT \n");
printf("ENTER YOUR CHOICE\n");
scanf("%d",&cho);
if(cho==1) //first ele.
{
if(q.rear1!=-1)
printf("THE FIRST ELEMENT OF THE QUEUE IS %d\n",q.ele[q.rear1]);
else
printf("THE FIRST ELEMENT OF THE QUEUE IS %d\n",q.ele[q.front2]);
}
if(cho==2)
{
if(q.rear2!=n)
printf("THE LAST ELEMENT OF THE QUEUE IS %d\n",q.ele[q. rear2]);
else
printf("THE LAST ELEMENT OF THE QUEUE IS %d\n",q.ele[q.front1]);
}
}
break;
case 4:
printf("*****SIZE OF THE QUEUE*****\n");
qs=queuesize(&q);
printf("size of the queue is %d\n",qs);
break;
case 5:
exit();
}
printf("DO YOU WANT TO CONTINUE?\n...ENTER y(for yes) or n(for no)\n");
fflush(stdin);
scanf("%c",&c);
}while(c=='y');
}
int fullqueue(queue *q)
{
if((q->front1==q->front2) && (q->rear1==0 && q->rear2==n-1))
return(1);
else
return(0);
}
void insert(queue *q,int num,int cho)
{
int m;
if(cho==1) //insertion at end.
{
if(q->front2==n && q->rear2==n)
{
q->rear2=q->front2=n-1;
q->ele[q->rear2]=num;
}
else
if(q->front2<=q->rear2)
{
q->front2--;
q->ele[q->front2]=num;
}
}
else
if(cho==2) //insertion at beginning.
{
if(q->front1==-1 && q->rear1==-1)
{
q->rear1=q->front1=0;
q->ele[q->front1]=num;
}
else
if(q->rear1<q->front1)
{
q->front1++;
q->ele[q->front1]=num;
}
}
}
int delete(queue* q,int cho)
{
int num,m;
if(cho==1) //deletion at end.
{
if(q->front2==n && q->rear2==n)
printf("NO ELEMENT CAN BE DELETED FROM THE END OF THE QUEUE\n");
else
if((q->rear2==q->front2) && (q->rear2!=n && q->front2!=n))
{
num=q->ele[q->rear2];
q->rear2=q->front2=n;
}
else
if(q->front2<q->rear2)
{
num=q->ele[q->rear2];
m=q->rear2;
while(m>q->front2)
q->ele[m]=q->ele[m--];
q->front2++;
}
}
else
if(cho==2) //deletion at beginning.
{
if(q->front1==-1 && q->rear1==-1)
{
printf("NO ELEMENT CAN BE DELETED FROM THE FRONT END OF THE QUEUE\n");
}
else
if((q->rear1==q->front1) && (q->rear1!=-1 && q->front1!=-1))
{
num=q->ele[q->rear1];
q->rear1=q->front1=-1;
}
else
if((q->front1>=q->rear1) && (q->rear1!=-1 && q->front1!=-1))
{
num=q->ele[q->rear1];
m=q->rear1;
while(m<q->front1)
q->ele[m]=q->ele[m++];
q->front1--;
}
}
return(num);
}
int emptyqueue(queue *q)
{
if((q->front1==-1 && q->rear1==-1) && (q->front2==n && q->rear2==n))
return(1);
else
return(0);
}
int queuesize(queue *q)
{
int qs;
printf("r1=%d,f1=%d,r2=%d,f2=%d\n",q->rear1,q->front1,q->rear2,q->front2);
if(emptyqueue(q))
qs=0;
else
qs=(q->front1-q->rear1+1)+(q->rear2-q->front2+1);
return(qs);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -