作者在 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;
}
#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 |
输出样例: | 病历号为123的病人就诊 无病人就诊 输入命令不合法! 今天不再接收病人排队,下列排队的病人依次就诊:124 125 |