患者到医院看病事件模拟

作者在 2011-06-15 13:17:45 发布以下内容
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>

typedef struct node{
char number[20];
struct node *next;
}node,*queueptr;
typedef struct{
queueptr front;
queueptr rear;
}linkque;
void initque(linkque &q)
{
     q.front=q.rear=(queueptr)malloc(sizeof(node));
     q.front->next=NULL;
}
void enque(linkque &q,char *e)
{
     queueptr p;
     p=(queueptr)malloc(sizeof(node));

     strcpy(p->number,e);
     q.rear->next=p;
     p->next=NULL;
     q.rear=p;
}
char * deque(linkque &q,char *e)
{
     queueptr p;
     if(q.front==q.rear)
     exit(0);
     p=q.front->next;
     strcpy(e,p->number);
     q.front->next=p->next;
     if(q.rear==p)
     {
       q.rear=q.front;
     }
     free(p);
     return e;
}
int emptyque(linkque &q)
{
    if(q.front==q.rear)
    return 1;
    else
    return 0;
}
int main()
{
    char e[10];
    linkque q;
    char lin;
    initque(q);
    scanf("%c",&lin);
    getchar();
    while(1)
    {
        if (lin=='a'||lin=='A')
        {
            scanf("%s",e);
            getchar();
            enque(q,e);
        }
        else if(lin=='n'||lin=='N')
        {
            if(emptyque(q))
            {
                printf("无病人就诊\n");

            }
            else
            printf("病历号为%s的病人就诊\n",deque(q,e));

        }
        else if(lin=='s'||lin=='S')
        {
            break;
        }
        else
        printf("输入命令不合法!\n");
        scanf("%c",&lin);
        getchar();
    }
    printf("今天不再接收病人排队,下列排队的病人依次就诊:");
    while(!emptyque(q))
    {
        printf("%s ",deque(q,e));
    }
    return 0;
}
标题: 患者到医院看病事件模拟
时 限: 1000 ms
内存限制: 10000 K
总时限: 3000 ms
描述: 患者到医院看病的顺序是:先排队等候,再看病治疗。要求设计一个算法,模拟病人等候就诊的过程。
其中:“病人到达”用命令“A”(或“a”)表示,“护士让下一位就诊”用“N”(或“n”)表示,“不再接收病人排队”用“S”(或“s”)表示。
输入: A(或a) 病历号x
N(或n)
S(或s)
输出:

病历号为x的病人入队,无输出
若无病人,显示无病人就诊;否则输出队列中的第一个病人就诊信息
今天不再接收病人排队,输出队列中所有病人的病历号
若输入其它命令,则输出"输入命令不合法!"

输入样例:

A 123
n
n
a 124
a 125
x
s

输出样例: 病历号为123的病人就诊
无病人就诊
输入命令不合法!
今天不再接收病人排队,下列排队的病人依次就诊:124 125
数据结构(c语言) | 阅读 1390 次
文章评论,共0条
游客请输入验证码
浏览69253次