数据结构简单模拟银行排队系统

您所在的位置:网站首页 爱尔兰拒绝系统 数据结构简单模拟银行排队系统

数据结构简单模拟银行排队系统

2024-07-03 21:55:00| 来源: 网络整理| 查看: 265

数据结构 队列 银行排队系统实现

功能要求:

(1) 客户进入排队系统;

(2) 客户离开;

(3) 查询当前客户前面还有几人;

(4) 查询截至目前总共办理多少客户。

输出要求:每进行一次操作后,输出当前排队成员情况。

算法实现 首先创建一个空队列即银行排队队列,再向其中执行插入,删除,查询等操作。在执行插入操作时要判断队列是否已达最大长度,否则不能插入。在删除时要判断队列是否为空,否则不能执行删除操作。删除以后若队列为空,则需要将队尾指向对头。

#include #include #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 //define the structure node int m = 0; typedef int Status; typedef int QElemType; typedef struct queue//结点结构 { int value; struct queue* next; }Queue, *QueuePtr; typedef struct linkqueue { Queue *front;//头指针 Queue *tail;//尾指针 }LinkQueue; #define QUEUE_LEN sizeof(Queue) int initQueue(LinkQueue*);//创建一个队列 int EmptyQueue(LinkQueue*);//判断队列是否为控 int enterQueue(LinkQueue*, int value);//插入元素value为Q的新的队尾元素 int deQueue(LinkQueue*);//删除元素 int printQueue(LinkQueue*);//输出队列 int Query(LinkQueue*, int);//查询元素myNum在队列中的位置 #include #include int initQueue(LinkQueue* Q)//构造一个空队列Q { printf("Init a queue ......\n"); if (!(Q->front = Q->tail = (Queue*)malloc(QUEUE_LEN))) { printf("ERROR:Malloc Error !\n"); return ERROR; } Q->front->next = NULL; return OK; } int enterQueue(LinkQueue* Q, int enterValue)//插入元素enterValue为Q的新的队尾元素 { Queue* tmpNode = NULL; if (!(tmpNode = (Queue*)malloc(QUEUE_LEN))) { printf("ERROR:Malloc Error !\n"); return ERROR; } tmpNode->value = enterValue; tmpNode->next = NULL; Q->tail->next = tmpNode; Q->tail = tmpNode; } int EmptyQueue(LinkQueue *Q) //若队列Q为空,返回TRUE,否则返回FALSE { if (Q->front==Q->tail) return TRUE; else return FALSE; } int printQueue(LinkQueue* Q)//将队列中每个元素输出 { Queue* tmpNode = NULL; tmpNode = Q->front->next; if (NULL == tmpNode) { printf("无人排队\n"); return ERROR; } while (tmpNode != Q->tail) { printf("%d ", tmpNode->value); tmpNode = tmpNode->next; } printf("%d\n", Q->tail->value); } int deQueue(LinkQueue*Q, QElemType *e)//若队列不空,删除Q的队头元素,用e返回其值,并返回OK,否则返回ERROR { QueuePtr p; if (EmptyQueue(Q)) { printf("无人离开\n"); return ERROR; } p = Q->front->next; *e = p->value; Q->front->next = p->next; m++; if (Q->tail == p)//如果队列中只有一个元素 Q->tail = Q->front;//此时应当让队尾指针指向队头,否则可能将队尾指针释放掉 free(p); return OK; } int Query(LinkQueue* Q, int myNum)//查询元素myNum在队列中的位置 { int numOfMan = 0; if (EmptyQueue(Q)) { printf("无人排队\n"); return ERROR; } else if (myNum==Q->front->value==Q->tail->value) { return ERROR; } else if (myNum > Q->tail->value || myNum front->value) { printf("对不起,您输入了一个错误的号码\n"); return ERROR; } else { numOfMan = myNum -( Q->front->next->value); return numOfMan; } } #include #include static int bankNumber = 0; static int totalNumber = 0; int stopBank(); int startBank(); int flag = 1; int main() { int choice = 0; int d; int num = 0; LinkQueue Q; initQueue(&Q); while (1) { printf("\n\n#########银行排队系统 #############\n"); printf("### 1:客户进入排队系统; \n"); printf("### 2:客户离开银行 \n"); printf("### 3:查询当前客户前面还有几人 \n"); printf("### 4:查询截止目前总共办理多少客户 \n"); printf("### 5:EXIT \n"); printf(" 请选择[1-5]: "); scanf_s("%d", &choice); switch (choice) { case 1: if (flag) { bankNumber++; enterQueue(&Q, bankNumber); totalNumber++; printf("你的等待号码数字 %d\n", bankNumber); printf("%d 人在您之前,请稍等\n", Query(&Q, bankNumber)); printf("当前的排队成员情况为:"); printQueue(&Q); break; } else { printf(" 停止申请号码\n"); printf("当前的排队成员情况为:"); printQueue(&Q); break; } case 2: deQueue(&Q,&d); printf("您(%d号)已离开银行 ....\n", d); totalNumber--; printf("当前的排队成员情况为:"); printQueue(&Q); break; case 3: printf("请输入您的号码:\n"); scanf_s("%d", &num); printf("%d 人在您之前,请稍等\n", Query(&Q, num)); printf("当前的排队成员情况为:"); printQueue(&Q); break; case 4: printf("截止目前总共办理%d个客户\n", m); printf("当前的排队成员情况为:"); printQueue(&Q); break; case 5: exit(0); break; default: break; } } return OK; } int stopBank() { flag = 0; return 0; } int startBank() { flag = 1; return 0; }

运行结果在这里插入图片描述

1、客户进入排队系统在这里插入图片描述

2、客户离开银行 在这里插入图片描述

3、查询当前客户前面还有几人 在这里插入图片描述

4、查询截止目前总共办理多少客户 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭