数据结构上机实验报告(看病问题)

上传人:小** 文档编号:88209634 上传时间:2019-04-20 格式:DOCX 页数:11 大小:150.18KB
返回 下载 相关 举报
数据结构上机实验报告(看病问题)_第1页
第1页 / 共11页
数据结构上机实验报告(看病问题)_第2页
第2页 / 共11页
数据结构上机实验报告(看病问题)_第3页
第3页 / 共11页
数据结构上机实验报告(看病问题)_第4页
第4页 / 共11页
数据结构上机实验报告(看病问题)_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《数据结构上机实验报告(看病问题)》由会员分享,可在线阅读,更多相关《数据结构上机实验报告(看病问题)(11页珍藏版)》请在金锄头文库上搜索。

1、计算机学院2013级数据结构实验数据结构上机实验报告题目:一个病人看病模拟程序 学生姓名:周瑞楠学生学号:3013216085学院名称:计算机学院专业:计算机科学与技术时间:2014.10.28目 录第一章,需求分析 31.1 原题描述31.2 详细问题的解决方案31.2.1 解决方案要求3 1.2.2 各个环节功能要求4第二章,概要设计 52.1 抽象数据类型52.2 主要算法描述52.3 算法分析6第三章,详细设计 7 3.1 程序代码7第四章,调试分析 9第五章,测试分析 10第六章,未来展望与思考 11第一章 需求分析1.1 原题描述请按照如下要求编写一个病人看病模拟程序编写一个程序,

2、反映病人到医院看病,排队看医生的情况。在病人排队过程中,主要重复两件事:(1)病人到达诊室,将病历本交给护士,拍到等待队列中候诊。(2)护士从等待队列中取出下一位病人的病例,该病人进入诊室就诊。1.2详细问题的解决方案1.2.1问题分析要求模拟病人等待就诊这一过程,程序采用菜单方式,其选项及功能说明如下:(1)排队输入排队病人的病历号,加入到病人排队队列中。(2)就诊病人排队队列中最前面的病人就诊,并将其从队列中删除。(3)查看排队从队首到队尾列出所有的排队病人的病历号。(4)不再排队,余下依次就诊从队首到队尾列出所有的排队病人的病历号,并退出运行。(5)下班退出运行。1.2.2 解决方案要求

3、测试数据及输出如下:1:排队 2:就诊 3:查看排队 4:不再排队,余下依次就诊 5:下班请选择:1输入病历号:11:排队 2:就诊 3:查看排队 4:不再排队,余下依次就诊 5:下班请选择:1输入病历号:21:排队 2:就诊 3:查看排队 4:不再排队,余下依次就诊 5:下班请选择:1输入病历号:31:排队 2:就诊 3:查看排队 4:不再排队,余下依次就诊 5:下班请选择:2病人1就诊1:排队 2:就诊 3:查看排队 4:不再排队,余下依次就诊 5:下班请选择:3排队病人:2 31:排队 2:就诊 3:查看排队 4:不再排队,余下依次就诊 5:下班请选择:1输入病历号:41:排队 2:就诊

4、 3:查看排队 4:不再排队,余下依次就诊 5:下班请选择:4病人按以下顺序就诊:2 3 41.2.3 各个环节功能要求表1-2.1 环节功能 函数功能注意条件及限制规则initQueue()建立空队列头指针尾指针建立后判断是否为NULLEnQueue()在队尾插入元素判断节点储存分配是否失败DeQueue()删除对头元素并返回其值释放被删除的节点删除队尾元素注意改变指针位置ShowQueue()输出队列元素补充正文: 主函数里用switch来表明各种情况下应当调用的函数第二章 概要设计2.1 抽象数据类型ADT deletenode 数据对象:D=ai|aiElemSet,i=1,2,m,

5、m0 TermSet 中的每个元素包含一个整数 数据关系:R1=| ai,ai-1D,且ai中的整数有序,i=2,3,n 约定其中a1端为队列投,an端为队列尾 基本操作: InitQueue(&Q); 操作结果:建立空队列。 DestroyQueue(&Q) 初始条件:队列Q已经存在。 操作结果:销毁队列。 EnQueue(&Q,e) 初始条件:队列Q已经存在。 操作结果:在队尾插入元素e。 DeQueue(&Q) 初始条件:队列Q已经存在。 操作结果:删除队头元素并返回其值。 ShowQueue()(&Q) 初始条件:队列Q已经存在。 操作结果:输出队列元素。 ADT Joseph2.2主

6、要算法描述2.3算法分析T(n)=O(a)(a为常数)程序运行次数取决于操作者的输入第三章 详细设计3.1 程序代码#include using namespace std;typedef struct Node struct Node *next; int data;typedef struct LinkQueue Node *front;/队头指针 Node *rear;/队尾指针 ;Node *initQueue(LinkQueue &Q)/构造空队列 Q.front=Q.rear=(Node*)malloc(sizeof(Node); if(!Q.front) return 0; Q.

7、front-next=NULL; return Q.front;Node *EnQueue(LinkQueue &Q,int e) /在队尾插入元素 Node *p=(Node *)malloc(sizeof(Node); if(!p) return 0; p-data=e; Q.rear-next=p; p-next=NULL; Q.rear=p; return Q.front; int DeQueue(LinkQueue &Q)/删除队头元素if(Q.front=Q.rear)return 0;Node *p=Q.front-next;Q.front-next=p-next;return

8、p-data;if(Q.rear=p); Q.front=Q.rear;free(p);void ShowQueue1(LinkQueue &Q) /输出排队病人序号 Node *p; p=Q.front-next; while(p) coutdatanext; coutendl; int main() int n; LinkQueue s; Node *q=initQueue(s); coutn) int a; switch(n) case 1:couta; q=EnQueue(s,a); break; case 2:int b=DeQueue(s); cout病人b就诊endl; brea

9、k; case 3:cout排队病人:; ShowQueue1(s); break; case 4:cout病人按一下顺序就诊:; ShowQueue1(s); return 0; case 5:return 0; cout1:排队 2:就诊 3:查看排队 4:不再排队,余下依次就诊 5:下班请选择:; return 0;第四章 调试分析Bug 名称输出与要求不一致Bug描述相同元素查找不完整Bug原因漏掉选择项Bug解决方案在while循环最后加上选择项Bug总结输出要与要求一致第五章 测试分析测试编号1 测试对象EnQueue()测试输入参数1 2 3 4 5测试步骤1.生成空队列 2.调用initQueue()函数3.输出测试预期结果1 2 3 4 5 6测试输出结果测试分析预期结果与实际结果符合第六章 未来展望与思考6.1 思考与展望该问题可以拓展到售票排队,各种排队问题上6.2 感想通过这次实验作业让我坚定要好好学习数据结构,多看代码多练编程,一定要克服这些困难11

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号