采用循环队列或链队列实现病人看病的模拟程序
采用循环队列或链队列实现病人看病的模拟程序
(1)定义队列的存储结构;
(2)实现队列的初始化、判断是否为空、入队、出队等基本操作;
(3)调用队列的基本操作实现病人看病模拟程序包括排队、就诊、查询、退出等功能;
//@立木
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100
typedef int ElemType;
typedef struct
{ElemType data[MaxSize];int front, rear;
}SqQueue;
SqQueue *q1;void InitQueue(SqQueue *&q) //初始化
{q=(SqQueue *)malloc(sizeof(SqQueue));q->front=q->rear=-1;
}void DestroyQueue(SqQueue *&q) //销毁队列
{free(q);
}bool QueueEmpty(SqQueue *q) //判断是否为空
{return(q->front==q->rear);
}bool enQueue(SqQueue *&q,ElemType e) //进队列
{if(q->rear==MaxSize-1)return false;q->rear++;q->data[q->rear]=e;return true;
}bool deQueue(SqQueue *&q,ElemType e) //出队列
{if(q->rear==q->front)return false;q->front++;e=q->data[q->front];return true;
}void seedoctor()
{InitQueue(q1);int a,b=0,x; //a为命令,b为最后排队的患者序号 ,x用于退出程序 。 int d=0,f=0,g=0; //d,f,g用于计数,用户输入错误命令3次,退出程序! int m = 0; //m为已经就诊的总人数 或者 当前正在就诊的患者的序号 。 printf("--------看病系统--------\n"); printf("(队尾患者优先就诊)\n");printf("1.排队");printf("2.就诊");printf("3.查询");printf("4.退出"); //排在队尾的先就诊 while(x){printf("\n请输入命令:");scanf("%d",&a); switch(a){case 1: //排队 b++; enQueue(q1,b);printf("患者已成功挂号正在排队,序号为:%d\n",b);//printf("现在队尾患者序号为:%d\t",m+1);//printf("排队人数:%d",b-m); // b-m 为当前排队人数 break;case 2: //就诊 if(b-m<1) // 当前排队人数小于1 ,error{ printf("error");g++;if(g==3){printf("\n▲您已错误输入命令3次,程序自动退出!");x=0; }}else{if(b>m) // 最大的排队序号必须大于 已经 就诊的总人数 m,此时才有患者在就诊 {deQueue(q1,m+1);printf("患者%d正在就诊\n",m+1);m++; if(b-m==0) //最后排队的患者序号 减 已经就诊的总人数等于0 时,没有人排队 printf("当前无人排队!\n"); else printf("现在队尾患者序号为:%d\n",1+m); //否则当前排队的患者为 已经就诊的总人数+1号 }else{printf("error,当前无人排队,无人就诊!");f++;if(d==3){printf("\n▲您已错误输入命令3次,程序自动退出!");x=0; }}}break;case 3: //查询 if(QueueEmpty(q1))printf("当前排队人数:%d\n",b-m);printf("当前正在就诊的患者为:%d号\n",m); break;case 4: //退出 DestroyQueue(q1);printf("看病结束,退出程序!");x=0;break;default:printf("error,请重新输入:");d++;if(d==3){printf("\n▲您已错误输入命令3次,程序自动退出!");x=0; }}}
}int main()
{seedoctor(); return 0;
}
采用循环队列或链队列实现病人看病的模拟程序相关推荐
- 顺序队列,循环队列,链队列
队列 先看队列接口和结点类 1. 顺序队列 2. 循环队列 3. 链队列 先看队列接口和结点类 package com.lovely.queue;/** * 2020年4月26日下午2:42:44* ...
- 【数据结构与算法】循环队列和链队列的比较
前言 本文原本是一篇随感+笔记,被翻出来后就整理发了博客. 不曾想能上搜索头条,既如此,决定更新一下,加上必要的阐释,避免影响有需求的读者. (我这么理解大家,如果有需要的话,是不是可以考虑点个赞或者 ...
- c语言循环队列入列算法,C语言——循环队列和链队列的基本运算
// 循环队列 #include #include "SeqQue.h" // 循环队列的基本运算 /* const int maxsize = 20; typedef struc ...
- 队列,链队列,链式存储的队列
采用链式存储的队列称为链队列(linked queue),队列是运算受限的线性表,即队列的插入和删除位置分别位于表的两端.故需要两个指针来指向这2个特殊位置,即对首指针和队尾指针. 本例采用的是带头结 ...
- 顺序队列,链队列的基本操作
顺序队列,链队列的基本操作 一.实验目的 1.深入了解队列的定义和特性. 2.掌握队列的数组表示.链表表示以及相应操作的实现,巩固对这两种结构的构造方法的掌握. 3. 会灵活运用队列结构解决某些实际问 ...
- java先进先出 循环队列_java队列--先进先出(循环队列、链队列)
队列:只允许在一端进行插入操作(队尾),在另一端进行删除操作(队头). 队列的特征就是: 先进先出. 队列的思想及实现也同样非常简单.在生活中的各种常常都需要排队进行,键盘中缓存区.操作系统中的作业调 ...
- 【数据结构】队列(链队列、循环队列)的存储结构及基本运算(C语言)
目录 1. 队列基本概念 2. 链队列 2.1 代码+注释 2.2 运行结果 3. 循环队列 3.1 代码+注释 3.2 运行结果 1. 队列基本概念 队列(Queue)是一种限定性线性表,它只允许在 ...
- 数据结构与算法(3-2)队列(顺序队列、循环队列与链队列)
目录 一.顺序队列 1.存储结构 2.入队和出队 总代码 二.循环队列 总代码: 三.链队列 1.存储结构 2.入队和出队 总代码 一.顺序队列 队列特征:先进后出.后进后出. 1.存储结构 //队列 ...
- Java实现队列(循环队列,链队列)
循环队列: package SeqQueue;public class Queue {private int data[];private int queueSize;private int fron ...
最新文章
- 【计算理论】自动机设计 ( 设计自动机 | 确定性自动机设计示例 | 确定性与非确定性 | 自动机中的不确定性 )
- Python进阶_wxpy学习:原始数据
- 观看TED演讲(计算机的发明和发展)感受
- 安装ipython失败 in error catcher_疯狂的Python:零基础小白入门帖子详情 - 网易云课堂...
- Libvirt虚拟机的Qos与Cgroup
- python文字竖排的2种实现方法
- 没想到裴勇俊留了一头长发。
- 怎么把苹果手机通讯录导入华为手机_苹果手机资料快速导入华为手机。苹果的ios系统也可以把资料导入安卓!...
- 详解c++[指针的指针] 和 [指针的引用]
- python工厂模式和单例模式_python之单例模式和工厂模式
- PyTorch 激励函数
- 思科交换机命令大全 一
- 鱼之死,越狱章鱼和雾霾黑客
- python3 爬取搜狗微信的文章
- 人民币大写金额转换算法
- SPSS中的数据分析—描述性统计分析【3】
- 新知实验室--腾讯云TRTC体验
- 【Python】利用摸鱼的时间,我写了一个三国杀开盒模拟器...
- ZynqMP 调试 FSBL 代码
- 利用curl进行ftp的下载和上传