1、用队列模拟病人排队数据结构课程设计报告 (2015/2016学年 第2学期)学生: 学生专业: 计算机科学与技术学生班级: 学生学号: 上机环境: Visual C+ 6.0 2016年4月23日实验题目:编写一个程序exp37.cpp,反应病人到医院看病,排队看医生的情况。要求模拟病人等待就诊这一过程。程序采用菜单方式,其选项及功能说明如下:排队输入排队病人的病历号,加入到病人排队队列中;就诊病人排队队列中最前面的病人就诊,并将其从队列中删除;查看排队从队首到队尾列出所有的排队病人的病历号;不再排队,余下依次就诊从队首到队尾列出所有的排队病人的病历号,并退出运行;下班退出运行。实验文件:ex
2、p3_7.h#ifndef exp3_7_h#define exp3_7_h#define _Nmax 11#include using namespace std;typedef char Type; typedef struct patient Type name20; int age; Type sex5; Type number_Nmax; ElemType; typedef struct qnode ElemType data; struct qnode * next; QNode; typedef struct QNode * front; QNode * rear; LiQueu
3、e; void InitQueue( LiQueue * &q);/初始化队列 void DestroyQueue( LiQueue * &q);/销毁队列 bool QueueEmpty( LiQueue * &q);/判断队列是否为空 void enQueue( LiQueue * &q, ElemType e);/进队列 bool deQueue( LiQueue * &q, ElemType &e);/出队列 void scanf_pat( ElemType &p);/输入病人的信息 void printf_pat( ElemType &e);/输出下一个病人的信息 void oper
4、ation();/操作 void printf_Menu();/菜单#endifexp3_7.cpp#include #include exp3_7.h#include using namespace std;void InitQueue( LiQueue * &q) q = ( LiQueue *)malloc(sizeof( LiQueue); q-front = q-rear = NULL;void DestroyQueue( LiQueue * &q) QNode * p = q-front , * r; if( p!= NULL) r = p-next ; while ( r!= N
5、ULL) free(p); p = r; r = p-next ; free(p); free(q);bool QueueEmpty( LiQueue * &q) return( q-rear = NULL);void enQueue( LiQueue * &q, ElemType e) QNode * p; p = (QNode *)malloc(sizeof( QNode); p-data = e; p-next = NULL; if( q-rear = NULL) q-front = q-rear = p; else q-rear -next = p; q-rear = p; bool
6、deQueue( LiQueue * &q, ElemType &e) QNode * t; if( q-rear =NULL) return false; t = q-front ; if( q-front = q-rear ) q-front = q-rear = NULL; else q-front = q-front -next ; e = t-data; free(t); return true;void scanf_pat( ElemType &p) cout p.name; p.name19 = 0; cout p.sex ; p.sex 4 = 0; cout p.age; c
7、out p.number ; p.number _Nmax-1 = 0;void printf_pat( ElemType &e) cout下一个病人n 姓 名: e.name n 性 别: e.sex n 年 龄: e.age n 病历号: e.number n; coutfront; while(q-front != NULL) e = q-front-data; printf_pat(e); q-front = q-front-next; ; q-front = t;break; case 4: while(q-front != NULL) if(deQueue(q,e) = true)
8、 printf_pat(e); ;break; coutn; coutendl; void printf_Menu() cout*choose your function*endl; cout 1.排队 2.就诊endl; cout 3.查看排队 4.不再排队,余下依次就诊endl; cout 5.退出运行endl; cout请选择你所需要的功能:; exp3_7_main.cpp#include #include using namespace std;#include exp3_7.h int main() operation(); return 0; 算法描述:程序采用链队储存数据,用switch函数进行功能选择:1.排队操作采用函数enQueue(q,e)进队;2.就诊操作使用deQueue(q,e)函数和printf(e)函数实现;3.查看排队采用q-front依次输出数据;4.不再排队,余下病人就诊用while语句和deQueue(q,e)函数和printf(e)函数实现;5.退出实验数据:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1