数据结构实验5

7-2 队列应用(蓝桥杯)
CLZ 银行只有两个接待窗口,VIP 窗口和普通窗口,VIP 用户进入 VIP 窗口排队,剩下的进入普通窗口排队。现有 M 次操作,操作有四种类型,如下:

IN name V:表示一名叫 name 的用户到 VIP 窗口排队

OUT V:表示 VIP 窗口队头的用户离开排队

IN name N:表示一名叫 name 的用户到普通窗口排队

OUT N:表示普通窗口队头的用户离开排队

求 M 次操作结束后 VIP 窗口队列和普通窗口队列中的姓名。

输入格式:
第一行是一个整数 M(1≤M≤1000),表示一共有 M 次操作。

第二行到第 M+1 行输入操作,格式如下:

IN name V
OUT V
IN name N
OUT N

输出格式:
输出 M 次操作后 VIP 窗口队列和普通窗口队列中的姓名(从头到尾),先输出 VIP 窗口队列后输出普通窗口队列。

输入样例:
在这里给出一组输入。例如:

5
IN xiaoming N
IN Adel V
IN laozhao N
OUT N
IN CLZ V
输出样例:
在这里给出相应的输出。例如:

Adel
CLZ
laozhao

代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAX_SIZE 1000

typedef struct Queue{
    char name[MAX_SIZE][50];
    int front,rear;
}Queue;

void initQueue(Queue *q){
    q->front=0;
    q->rear=0;
}

int isEmpty(Queue *q){
    return q->front==q->rear;
}

void enqueue(Queue *q,const char *name){
    strcpy(q->name[q->rear],name);
    q->rear++;
}

void dequeue(Queue *q){
    if(!isEmpty(q)){
        q->front++;
    }
}

void printQueue(Queue *q){
    for(int i=q->front;i<q->rear;i++){
        printf("%s\n",q->name[i]);
    }
}

int main(){
    int M;
    scanf("%d",&M);

    Queue vipQueue,normalQueue;
    initQueue(&vipQueue);
    initQueue(&normalQueue);

    char operation[50],name[50];

    for(int i=0;i<M;i++){
        scanf("%s",operation);
        if(strcmp(operation,"IN")==0){
            scanf("%s",name);
            scanf("%s",operation);

            if(strcmp(operation,"V")==0){
                enqueue(&vipQueue,name);
            }
            else if(strcmp(operation,"N")==0){
                enqueue(&normalQueue,name);
            }
        }else if(strcmp(operation,"OUT")==0){
            scanf("%s",operation);
            if(strcmp(operation,"V")==0){
                if(!isEmpty(&vipQueue)){
                    dequeue(&vipQueue);
                }
            }else if(strcmp(operation,"N")==0){
                if(!isEmpty(&normalQueue)){
                    dequeue(&normalQueue);
                }
            }
        }
    }
    printQueue(&vipQueue);
    printQueue(&normalQueue);

    return 0;
}
posted @ 2025-01-10 16:51  呓语-MSHK  阅读(13)  评论(0)    收藏  举报