医院排队就诊问题(C语言实现)求大神帮忙查看一下如何修改这些错误 (续)

问题描述:
医院急诊科室,有医生1名
现有病人7名,先后到达
病人病情轻重各有不同(分3级,3级最重,1级最轻),重症的优先就诊;病症相同的,先来的先就诊。
模型假设:
1.病人挂完号后进入对应的科室,每位病人属性包括姓名,性别,和身份证号
2.一开始的时候,医生空闲(等待病人)。
3.有护士根据病人病情,给出病情优先级后,再排队。
4.排队的病人按照先后次序排队,重症的优先就诊,病症相同的,先来的先就诊。。
5.一位医生每次只能看一个病人。
解决方案模型:
1. 程序模拟医院排队就诊,程序开始输入病人资料(包括优先级,姓名,性别,和身份证号)。
2. 设置一个病人的优先队列,按照优先级由高到低,分段排队,最开头的是优先级最高的病人;如果优先级相同,那么按照先来后到的顺序排队。
3. 对病人队列有两种操作,pop与push,医生每次从病人队列里面pop一个病人,并打印病人信息(包括优先级,姓名,性别,和身份证号),直到队列空。

  • 请大佬继续补充回答
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
#define MAXSIZE 100
typedef struct ElemType
{
    int level;
    char name[20];
    char gender;
    char ID[20];

}QelemType;
typedef struct{
    QelemType *base;
    int front;
    int rear;
}squene;
void Initquene(squene *s){
    s->base=(QelemType *)malloc(MAXSIZE * sizeof(QelemType));
    if(!s->base)
        exit(-1);
    s->front=0;
    s->rear=0;
}
void enquene(squene *s,QelemType e){
    if((s->rear+1)%MAXSIZE==s->front){
        printf("duimanb");
        exit(0);
    }
    s->base[s->rear]=e;
    s->rear=(s->rear+1)%MAXSIZE;
}
void dequene(squene *s,QelemType *e){
    if(s->rear==s->front){
        printf("栈空");
        exit(-1);
    }
    *e=s->base[s->front];
    s->front=(s->front+1)  % MAXSIZE;
}
int length(squene s){
    return (s.rear-s.front+MAXSIZE) % MAXSIZE;
}

int main()
{
    int i,j;
    int n;
    squene Q1;
    QelemType *e,t;
    Initquene(&Q1);
    printf("请输入前来就诊的病人数量:");
    scanf("%d",&n);
    e = (QelemType *)malloc(n*sizeof(QelemType));
    for(i=0;i<n;i++)
    {
        printf("\n请输入第%d个病人的优先级:",i+1);
        scanf("%d",&e[i].level);
        printf("\n请输入第%d个病人的姓名:",i+1);
        scanf("%s",e[i].name);
        fflush(stdin);
        printf("\n请输入第%d个病人的性别:",i+1);
        scanf("%c",&e[i].gender);
        printf("\n请输入第%d个病人的身份证:",i+1);
        scanf("%s",e[i].ID);
    }

    for (i=0;i<n-1;i++)
    {
        for (j=0;j<n-i-1;j++)
        {
            if (e[j].level<e[j+1].level)
            {
                t = e[j];
                e[j] = e[j+1];
                e[j+1] = t;
            }
        }
    }

    for (i=0;i<n;i++)
    {
        enquene(&Q1,e[i]);
    }

    for (i=0;i<n;i++)
    {
        dequene(&Q1,&t);
        printf("办理业务 姓名:%s,身份证号:%s,性别:%c,优先级:%d\n", t.name,t.ID, t.gender,t.level);
    }

    free(e);
    e=NULL;
    system("pause");
    return 0;

}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^