#include<stdio.h>
#include<string.h>
#define MAX 100
//这里MAX 设置的是100人,如果是1000000个人,则大约需要1000000*sizeof(student)个字节的连续空间,
//连续空间需求太多可能会导致分配空间失败,不可行.
//但我们需要将这个顺序处理的方法掌握到,同时会熟练设计此类问题的程序框架
typedef struct{
char name[6];
int rp;
}student;
int main()
{
freopen("selection.in","r",stdin);
//freopen("estdout.pc2","w", stdout);
student queue[MAX]; //这里不用必须使用循环队列
int T=2,i,maxrp, front, rear;
char s[10];
scanf("%d", &T);
while(T--)
{
front=rear=0;//初始状态,队列为空。
scanf("%s", s);
if(strcmp(s,"START")==0)
{
front=0; //队头指针
rear=0; //尾指针
while(1) // rear-front 为元素的个数
{
scanf("%s", s);
if(strcmp(s,"C")==0)
{ scanf("%s%d", queue[rear].name, &queue[rear].rp);
rear++;
}
else if(strcmp(s,"G")==0)
front++; //删除队头元素,但没有判断队列是否有人。
else if(strcmp(s,"Q")==0)
{
if(front<rear) //队列不为空
{
maxrp=0; //找RP最大值
for(i=front; i<rear; i++)
if( queue[i].rp>maxrp )
maxrp=queue[i].rp;
printf("%d\n", maxrp);
}
else
printf("%d\n",-1);
}
else if(strcmp(s,"END")==0)
{ front=rear=0; //头尾指针为0,清空队列
break;
}
}
}
}
return 0;
}
选拔面试问题1 顺序队列
最新推荐文章于 2022-10-19 10:18:39 发布