选拔面试问题1 顺序队列

来源:互联网 发布:python机器人编程 ros 编辑:程序博客网 时间:2024/06/06 21:07
#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;}
0 0
原创粉丝点击