队列应用模拟患者医院看病过程。
患者医院看病过程是.先排队等候.再看病治疗。在排队的过程中主要重复做两件事员者挂号,该患者进人诊室看病。
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
typedef struct node
{int a[40],front,rear;
}node;//jiegouti
void chushihua(node *s)
{s->rear=0;
s->front=s->rear;
}//chushihua
void jindui(node *s,int c)
{if((s->rear+1)%40==s->front)
printf("号已排满");
else
{s->a[s->rear]=c;
s->rear=(s->rear+1)%40;
}
}//进队
int chudui(node *s)
{int c;
if(s->front==s->rear)
{printf("没有人挂号");exit(1);}
else
{c=s->a[s->front];
s->front=(s->front+1)%40;
return c;
}}//出对
int panduan(node *s)
{if(s->front==s->rear)
return 1;
else
return 0;
}//panduan
int main()
{node p,*s=&p;
chushihua(s);
int f=1,n;
char c;
while(f)
{printf("请输入指令:a是病人挂号,b是病人就诊,c是结束排队\n");
c=getch();
switch(c)
{case 'a':
printf("病号是\n");
scanf("%d",&n);
jindui(s,n);
break;
case 'b':if(!panduan(s))
{
n=chudui(s);
printf("请病号%d是的病人就诊\n",n);}
else
printf("无人挂号\n");
break;
case 'c':printf("今天结束挂号,请下列病人依次就诊\n");
while(!panduan(s))
printf("%d号",chudui(s));
f=0;
break;
default:printf("非法指令\n");
}
}
}
在这里插入代码片