数据结构之队列的应用-模拟病人排队就诊小程序(C/C++实现)
实验目的:
掌握队列应用和算法设计
实验内容:
编写一个程序,反映病人到医院排队看医生的情况,在病人排队过程中主要重复下面两件事
- 病人到达诊室,将病历本交给护士,排到等待队列中候诊
- 护士从等待队列中取出下一位病人的病历,该病人进入就诊室候诊
程序设计分析
要求模拟病人等待就诊这一过程,程序采用菜单方式,其选项及功能说明如下:
- 排队—>输入排队病人的病历号,加入到病人排队队列中
- 就诊—>病人排队队列中最前面的病人就诊,并将其从队列中删除
- 查看排队—>从队首到队尾列出所有排队病人的病历号
- 不再排队,余下依次就诊—>从队首到队尾列出所有排队病人的病历号,并退出运行
- 下班—>退出运行
GitHub地址(包含.cpp文件和可执行程序exe)
源代码(经VS2015、devC++编译器运行通过)
#include "stdio.h"
#include "stdlib.h"
#include "io.h"
#include "math.h"
#include "time.h"
#include"string.h"
#include<iostream>
using namespace std;
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 20 /* 存储空间初始分配量 */
typedef int Status;
typedef int QElemType; /* QElemType类型根据实际情况而定,这里假设为char */
typedef struct QNode /* 结点结构 */
{
QElemType data;
struct QNode *next;
}QNode, *QueuePtr;
typedef struct /* 队列的链表结构 */
{
QueuePtr front, rear; /* 队头、队尾指针 */
}LinkQueue;
Status visit(QElemType c)
{
printf("%d ", c);
return OK;
}
/* 构造一个空队列Q */
Status InitQueue(LinkQueue *Q)
{
Q->front = Q->rear = (QueuePtr)malloc(sizeof(QNode));
if (!Q->front)
exit(OVERFLOW);
Q->front->next = NULL;
return OK;
}
/* 销毁队列Q */
Status DestroyQueue(LinkQueue *Q)
{
while (Q->front