#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 順序隊列
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.