用队列模拟病人排队.docVIP

  • 17
  • 0
  • 约3.6千字
  • 约 11页
  • 2019-03-27 发布于湖北
  • 举报
数据结构课程设计报告 (2015/2016学年 第2学期) 学生姓名: 学生专业: 计算机科学与技术 学生班级: 学生学号: 上机环境: Visual C++ 6.0 2016年4月23日 实验题目:编写一个程序exp3—7.cpp,反应病人到医院看病,排队看医生的情况。要求模拟病人等待就诊这一过程。程序采用菜单方式,其选项及功能说明如下: = 1 \* GB2 ⑴ 排队——输入排队病人的病历号,加入到病人排队队列中; = 2 \* GB2 ⑵ 就诊——病人排队队列中最前面的病人就诊,并将其从队列中删除; = 3 \* GB2 ⑶ 查看排队——从队首到队尾列出所有的排队病人的病历号; = 4 \* GB2 ⑷ 不再排队,余下依次就诊——从队首到队尾列出所有的排队病人的病历号,并退出运行; = 5 \* GB2 ⑸ 下班——退出运行。 实验文件: exp3_7.h #ifndef exp3_7_h #define exp3_7_h #define _Nmax 11 #include string using namespace std; typedef char Type; typedef struct patient { Type name[20]; int age; Type sex[5]; Type number[_Nmax]; } ElemType; typedef struct qnode { ElemType data; struct qnode * next; } QNode; typedef struct { QNode * front; QNode * rear; } LiQueue; 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 operation();//操作 void printf_Menu();//菜单 #endif exp3_7.cpp #include iostream #include exp3_7.h #include string 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!= NULL) { 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 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; }

文档评论(0)

1亿VIP精品文档

相关文档