模拟病人到医院排队看病上机内容完整实验报告
【实训内容】
编写一个程序,模拟病人到医院排队看病的情况。
【思路】
由于医院看病是先到先看,所以可以使用队列来实现排队过程。模拟病人的排队看病主要完成以下几个操作:
(1)病人把病历本交到护士手中,相当于进队。
(2)排在最前面的病人先看,同时取走病历,这一步相当于出队。
(3)查看排队,从队头到队尾依次显示队列中所有的病历号。
(4)停止排队,退出程序。
【程序源代码】
#include "stdio.h"
#include "stdio.h"
#include "malloc.h"
typedef struct queue
{ /* 链存储结构 */
int data; /* 数据域 */
struct queue *next; /* 指针域 */
} QUEUE; /* 链类型名 */
QUEUE *front=NULL; /* 队头指针 */
QUEUE *rear=NULL; /* 队尾指针 */
/* ========================================================*/
/* 病例入队 */
/* ========================================================*/
void AddQueue(int x)
{
QUEUE *s;
s=(QUEUE *)malloc(sizeof(QUEUE)); /* 创建结点 */
s->data=x;
s->next=NULL;
if(rear == NULL) /* 空队列 */
front=s;
else /* 非空 */
rear->next=s;
rear=s;
}
/* ========================================================*/
/* 病人就诊,出队 */
/* ========================================================*/
void DelQueue(int *e)
{
if(front == NULL ) /* 队列空 */
printf("Queue is empty\n");
else
{
QUEUE *temp;
temp=front->next;
*e=front->data;
free(front);
front=temp;
}
return;
}
/* ========================================================*/
/* 显示 */
/* ========================================================*/
void DisplayQueue()
{
if(rear==NULL )
{
printf("Queue is empty\n");
return;
}
QUEUE *temp=front;
printf("目前所有的病历号: ");
while (temp!=NULL)
{
printf("%d ",temp->data);
temp=temp->next ;
}
printf("\n");
}
/* ========================================================*/
/* 病人看病的程序 */
/* ========================================================*/
void SeeDoctor()
{
int selection,number; /* number为病历号 */
int exinum; /*exinum用于确认号码是否已有,true表示与之前的号码重复,输入无效*/
int stop=0; /* 判断号是否全部进队,st