- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构作业(1)
年级: 2004 级(2)班
专业: 计算机科学与技术专业学号: 200431500066
姓名: 秦博纯
病人看病模拟程序
编写一个程序,反映病人到医院看病,排队看医生的情况。在病人排队过程中,主要重复两件事:
病人到达诊室,将病历本交给护士,排到等待队列中候诊。
护士从等待队列中取出下一们病人的病历,该病人进入人诊室就诊。要求模拟病人等待这一过程,程序采用菜单方式,其选项及功能说明如下:
排队——输入排队病人的病历号,加入病人排队队列中;
就诊——病人排队队列中最前面的病人就诊,并将其从队列中删除;
查看排队——从队首到队尾列出所有的排队病人的病历号;
不再排队,余下依次就诊——从队首到队尾列出所有的排队病人的病历号,并退出运行;
下班——退出运行。
解:本项目的组成结构如图 1 所示,本程序的模块结构图如图 2 所示,图中方框表示函数,方框中指出函数名,箭头方向表示函数间的调用关系,虚线方框表示文件的组成,即指出该虚线方框中的函数存放在哪个文件中。
文件包含如下函数:
. SeeDoctor():模拟病人看病的过程。病人排队看医生,所以要用到一个队列,这里设计了一个不带头结点的单链表作为队列。
源程序如下:
图 1 项目组成
mainSeeDocto
main
SeeDocto
#includestdio.h #includemalloc.h typedef struct qnode
{
int data;
struct qnode *next;
}QNode; typedef struct
{
QNode *front,*rear;
}QuType; 图 2 项目的程序结构图
void SeeDoctor()
{
int sel,flag=1,find,no;
QuType *qu;
QNode *p;
qu=(QuType *)malloc(sizeof(QuType)); /*创建空队*/ qu-front=qu-rear=NULL;
while(flag==1) /*循环执行*/
{
择 );
printf(1:排队 2:就诊 3:查看排队 4:不再排队,余下依次就诊 5:下班 请选
scanf(%d,sel); switch(sel)
{
case 1:printf(输入病历号:); do
{
scanf(%d,no); find=0;
p=qu-front; while(p!=NULL!find)
{
if(p-data==no) find=1;
else
}
p=p-next;
if(find)
printf(输入的病历号重复,重新输入:);
}while(find==1);
p=(QNode *)malloc(sizeof(QNode));
p-data=no;p-next=NULL;
/*创建结点*/
if(qu-rear==NULL)
{
/*第一个病人排队*/
qu-front=qu-rear=p;
}
else
{
qu-rear-next=p;
qu-rear=p;
/*将*p 结点入队*/
}
break;
case 2:
if(qu-front==NULL)
/*队空*/
printf(没有排队的病人!\n);
else
{
/*队不空*/
p=qu-front;
printf(病人%d 就诊\n,p-data);
if(qu-rear==p)
{
/*只有一个病人排队*/
qu-front=qu-rear=NULL;
}
else
qu-front=p-next;
free(p);
}
break;
case 3:
if(qu-front==NULL)
/*队空*/
printf(没有排列的病人!\n);
else
{
/*队不空*/
p=qu-front;
printf(排队病人: );
while(p!=NULL)
{
printf(%d ,p-data);
p=p-next;
}
printf(\n);
}
break;
case 4: /*队空*/
if(qu-front==NULL)
printf(没有排队的病人!\n);
else /*队不空*/
{
p=qu-front;
printf(病人按以下顺序就诊: ); while(p!=NULL)
{
printf(%d ,p-data); p=p-next;
}
printf(\n);
}
flag=0; break;
case 5:
if(qu-front!=NULL)
printf(请排队的病人明天就医!\n); flag=0;
break;
/*退出*/
/*队不空*/
/*退出*/
}
}
}
void main()
{
SeeDoctor();
}
程序运行结果如下:
Micro soft
文档评论(0)