選拔面試問題1 順序隊列

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