队列应用

队列应用模拟患者医院看病过程。
患者医院看病过程是.先排队等候.再看病治疗。在排队的过程中主要重复做两件事员者挂号,该患者进人诊室看病。

#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");
 }
}
}
在这里插入代码片

猜你喜欢

转载自blog.csdn.net/feiqipengcheng/article/details/83154388