第七周项目5 排队看病模拟

2024-01-15 11:38

本文主要是介绍第七周项目5 排队看病模拟,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

问题及代码:

/*
Copyright (c)2016,烟台大学计算机与控制工程学院
All rights reserved.
文件名称:fangzhou.cbp
作    者:吕方舟
完成日期:2016年10月21日
版 本 号:v1.0
问题描述: 编写一个程序,反映病人到医院看病,排队看医生的情况。在病人排队过程中,主要重复两件事:
(1)病人到达诊室,将病历本交给护士,排到等待队列中候诊。
(2)护士从等待队列中取出下一位病人的病历,该病人进入诊室就诊。
要求模拟病人等待就诊这一过程。程序采用菜单方式,其选项及功能说明如下:
(1)排队——输入排队病人的病历号,加入到病人排队队列中。
(2)就诊——病人排队队列中最前面的病人就诊,并将其从队列中删除。
(3)查看排队——从队首到队尾列出所有的排队病人的病历号。
(4)不再排队,余下顺序就诊——从队首到队尾列出所有的排队病人的病历号,并退出运行。
(5)下班——退出运行,提示未就诊的病人明天再来。
输入描述:根据菜单提示选择
程序输出:各指令结果
*/
<pre class="cpp" name="code">#include <stdio.h>
#include <malloc.h>
typedef struct qnode
{
int data;
struct qnode *next;
} QNode;            /*链队结点类型*/
typedef struct
{
QNode *front,*rear;
} QuType;           /*链队类型*/
void SeeDoctor()
{
int sel,flag=1,find,no;
QuType *qu;
QNode *p,*q;
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;
}
}
p=qu->front;  //销毁队列
while (p!=NULL)
{
q = p->next;
free(p);
p = q;
}
}
int main()
{
SeeDoctor();
return 0;
}
运行结果:

 
<img src="https://img-blog.csdn.net/20161027110040569" alt="" />
知识点总结:运用队列结构解决实际问题。
心得体会:通过实际应用更好地了解队列的存储结构和使用方法及特点。

这篇关于第七周项目5 排队看病模拟的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/608758

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

usaco 1.2 Transformations(模拟)

我的做法就是一个一个情况枚举出来 注意计算公式: ( 变换后的矩阵记为C) 顺时针旋转90°:C[i] [j]=A[n-j-1] [i] (旋转180°和270° 可以多转几个九十度来推) 对称:C[i] [n-j-1]=A[i] [j] 代码有点长 。。。 /*ID: who jayLANG: C++TASK: transform*/#include<

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

hdu4431麻将模拟

给13张牌。问增加哪些牌可以胡牌。 胡牌有以下几种情况: 1、一个对子 + 4组 3个相同的牌或者顺子。 2、7个不同的对子。 3、13幺 贪心的思想: 对于某张牌>=3个,先减去3个相同,再组合顺子。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOExcepti

SpringBoot项目是如何启动

启动步骤 概念 运行main方法,初始化SpringApplication 从spring.factories读取listener ApplicationContentInitializer运行run方法读取环境变量,配置信息创建SpringApplication上下文预初始化上下文,将启动类作为配置类进行读取调用 refresh 加载 IOC容器,加载所有的自动配置类,创建容器在这个过程

Maven创建项目中的groupId, artifactId, 和 version的意思

文章目录 groupIdartifactIdversionname groupId 定义:groupId 是 Maven 项目坐标的第一个部分,它通常表示项目的组织或公司的域名反转写法。例如,如果你为公司 example.com 开发软件,groupId 可能是 com.example。作用:groupId 被用来组织和分组相关的 Maven artifacts,这样可以避免

2. 下载rknn-toolkit2项目

官网链接: https://github.com/airockchip/rknn-toolkit2 安装好git:[[1. Git的安装]] 下载项目: git clone https://github.com/airockchip/rknn-toolkit2.git 或者直接去github下载压缩文件,解压即可。