采用循环队列或链队列实现病人看病的模拟程序

(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. 顺序队列,循环队列,链队列

    队列 先看队列接口和结点类 1. 顺序队列 2. 循环队列 3. 链队列 先看队列接口和结点类 package com.lovely.queue;/** * 2020年4月26日下午2:42:44* ...

  2. 【数据结构与算法】循环队列和链队列的比较

    前言 本文原本是一篇随感+笔记,被翻出来后就整理发了博客. 不曾想能上搜索头条,既如此,决定更新一下,加上必要的阐释,避免影响有需求的读者. (我这么理解大家,如果有需要的话,是不是可以考虑点个赞或者 ...

  3. c语言循环队列入列算法,C语言——循环队列和链队列的基本运算

    // 循环队列 #include #include "SeqQue.h" // 循环队列的基本运算 /* const int maxsize = 20; typedef struc ...

  4. 队列,链队列,链式存储的队列

    采用链式存储的队列称为链队列(linked queue),队列是运算受限的线性表,即队列的插入和删除位置分别位于表的两端.故需要两个指针来指向这2个特殊位置,即对首指针和队尾指针. 本例采用的是带头结 ...

  5. 顺序队列,链队列的基本操作

    顺序队列,链队列的基本操作 一.实验目的 1.深入了解队列的定义和特性. 2.掌握队列的数组表示.链表表示以及相应操作的实现,巩固对这两种结构的构造方法的掌握. 3. 会灵活运用队列结构解决某些实际问 ...

  6. java先进先出 循环队列_java队列--先进先出(循环队列、链队列)

    队列:只允许在一端进行插入操作(队尾),在另一端进行删除操作(队头). 队列的特征就是: 先进先出. 队列的思想及实现也同样非常简单.在生活中的各种常常都需要排队进行,键盘中缓存区.操作系统中的作业调 ...

  7. 【数据结构】队列(链队列、循环队列)的存储结构及基本运算(C语言)

    目录 1. 队列基本概念 2. 链队列 2.1 代码+注释 2.2 运行结果 3. 循环队列 3.1 代码+注释 3.2 运行结果 1. 队列基本概念 队列(Queue)是一种限定性线性表,它只允许在 ...

  8. 数据结构与算法(3-2)队列(顺序队列、循环队列与链队列)

    目录 一.顺序队列 1.存储结构 2.入队和出队 总代码 二.循环队列 总代码: 三.链队列 1.存储结构 2.入队和出队 总代码 一.顺序队列 队列特征:先进后出.后进后出. 1.存储结构 //队列 ...

  9. Java实现队列(循环队列,链队列)

    循环队列: package SeqQueue;public class Queue {private int data[];private int queueSize;private int fron ...

最新文章

  1. 【计算理论】自动机设计 ( 设计自动机 | 确定性自动机设计示例 | 确定性与非确定性 | 自动机中的不确定性 )
  2. Python进阶_wxpy学习:原始数据
  3. 观看TED演讲(计算机的发明和发展)感受
  4. 安装ipython失败 in error catcher_疯狂的Python:零基础小白入门帖子详情 - 网易云课堂...
  5. Libvirt虚拟机的Qos与Cgroup
  6. python文字竖排的2种实现方法
  7. 没想到裴勇俊留了一头长发。
  8. 怎么把苹果手机通讯录导入华为手机_苹果手机资料快速导入华为手机。苹果的ios系统也可以把资料导入安卓!...
  9. 详解c++[指针的指针] 和 [指针的引用]
  10. python工厂模式和单例模式_python之单例模式和工厂模式
  11. PyTorch 激励函数
  12. 思科交换机命令大全 一
  13. 鱼之死,越狱章鱼和雾霾黑客
  14. python3 爬取搜狗微信的文章
  15. 人民币大写金额转换算法
  16. SPSS中的数据分析—描述性统计分析【3】
  17. 新知实验室--腾讯云TRTC体验
  18. 【Python】利用摸鱼的时间,我写了一个三国杀开盒模拟器...
  19. ZynqMP 调试 FSBL 代码
  20. 利用curl进行ftp的下载和上传

热门文章

  1. 360拿什么来PK百度
  2. Spark bucketing bucket分桶原理和应用
  3. 程序员阵线联盟 之歌
  4. 交换机的端口种类access、trunk、hybrid
  5. 【软件定义汽车】【服务篇】SOA服务及接口设计、服务部署、序列化
  6. 计算1+3+5+...+99的和
  7. 蓝桥杯_既约分数_java
  8. 看了下面的关于大亚湾核电站的一些报道,我终于明白为什么老弟在惠阳买的房子会这么便宜了
  9. JavaScript脚本访问后台服务实例
  10. MySQL快速生成大量测试数据(100万、1000万、1亿)