数据结构 队列

银行排队系统实现

功能要求:

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

(2) 客户离开;

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

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

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

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

#include<stdio.h>
#include<stdlib.h>
#include<math.h>#define OK      1
#define ERROR   0
#define TRUE 1
#define FALSE 0
//define the structure nodeint 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<stdio.h>
#include<stdlib.h>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;elsereturn 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 < Q->front->value){printf("对不起,您输入了一个错误的号码\n");return ERROR;}else{numOfMan = myNum -( Q->front->next->value);return  numOfMan;}
}#include<stdio.h>
#include<string.h>
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、查询截止目前总共办理多少客户

数据结构简单模拟银行排队系统相关推荐

  1. 数据结构大作业——银行排队系统

    数据结构大作业--银行排队系统 离散事件模拟--银行业务处理 题目分析 声明部分 辅助函数 初始化窗口节点 创建顾客节点 比较四个窗口的排队人数 输出离开顾客的信息 主要函数 完整的头文件代码 离散事 ...

  2. java银行排队系统_用GUI模拟银行排队系统

    要求: 和实际情况相似,您到银行办理业务,到了银行大厅首先是在电脑上刷卡(有的可能不用刷卡)取出一个纸条,上面有你的位置号还有你前面有多少人,在工作人员那里会有一个按钮,点击一下就会叫一个人到他那里办 ...

  3. c 语言银行排队系统,C++实现银行排队系统

    #include #include #include int cnt=0; //当日客流量 int sum=0; //当日客户排队总时间 typedef struct pnode{ int numbe ...

  4. 数据结构实验二(C语言):银行排队系统

    银行排队系统 [问题描述]假设银行只有2个窗口对外营业,顾客到银行办理业务,首先要取一个顺序号,然后排队等待叫号.被叫到号的顾客到柜台接受服务,服务完毕后离开.到了下班时间不再接收新来的顾客.顾客分为 ...

  5. 银行排队系统的设计与实现(源代码)

    (该系统在DEV编译器中不出现问题,在VC6.0中,要注意这样子设置就可以了,在"工程"->"设置"->"C/C++"-> ...

  6. QT4.7下的UI图形界面设计用例——银行排队系统

    这里写自定义目录标题 QT4.7的UI界面设计功能 效果展示 文件机制 UI功能详述 信号与槽机制(非常重要) 添加新文件 顶部菜单栏设定 菜单界面与点击下拉栏选项后界面切换 弹窗显示 主界面与弹窗界 ...

  7. 用c语言银行队列系统,C语言学习之用队列实现银行排队系统

    队列操作的接口:http://blog..net/qlx846852708/article/details/43666927 数据结构C语言实现:http://blog..net/qlx8468527 ...

  8. 银行办理CSS系统,简单的银行储蓄系统.doc

    PAGE PAGE 2 哈 尔 滨 理 工 大 学 毕 业 设 计 题 目: 简单的银行储蓄系统 院 .系: - 学院 - 工程系 姓 名: - - 指导教师: - - 系 主 任: - - 2012 ...

  9. c语言编程银行排队系统,C语言_课程设计银行排队系统.doc

    C语言_课程设计银行排队系统 #include #include #include #include #include #define n 3 int vip1=0; int y,z; float s ...

  10. c语言模拟银行ATM的程序,简单模拟银行ATM取款系统 | C/C++程序员之家

    学习C#,第一次C#实验课,模拟ATM取款系统,锻炼基本的C#语法以及选择控制语句! 实现功能: 1.取款 2.余额查询 3.修改密码 4.退出 [cpp] using System; using S ...

最新文章

  1. 我在CSDN的第一个1024
  2. opencv_IplImage未定义的标识符解决
  3. vscode使用教程python-如何在VSCode上轻松舒适的配置Python的方法步骤
  4. Magento 安装后台登不上的解决方法
  5. 如何用python进行量化交易_从零开始学习Python和量化交易
  6. 王道考研 计算机网络5 分层结构 协议 服务 接口
  7. Maxwell核心新技术VXGI,MFAA测试
  8. 如何解除FSO上传程序小于200k限制?
  9. fastReport 绑定DataBand数据源后还是打印出一条数据
  10. ubuntu 8.10 可用的源
  11. MES系统整体解决方案
  12. windows server 2008R2下安装nginx
  13. 眼镜寿命不仅跟镜架材质有关,还跟习惯有关系!
  14. [程序人生]--深度思考比勤奋更重要
  15. 超窄带通信系统UNB原理以及简单模拟
  16. HTML常用的标签:
  17. vivo手机的微信消息不提示问题解决
  18. 从0开始学习 GitHub 系列之「01.初识 GitHub」----转载自stormzhang 原创文章
  19. 数据治理系列(三):主数据管理
  20. Linux hash表

热门文章

  1. UFS系列三:UFS数据包UPIU
  2. 互联网十大网络流行语
  3. java 阴历转阳历,阳历转阴历工具类
  4. ereg/eregi报错处理办法
  5. tortoise-orm 分页码(python)
  6. c语言else的用法,else的用法
  7. 解决在宝塔面板IIS服务器上部署svg/woff/woff2字体的问题
  8. html表格边框去重复,css怎么解决表格边框线重复问题.
  9. Windows7系统提示当前页面的脚本发生错误怎么办
  10. 计算机科学与技术用惠普星15,11代酷睿满血出击 快来GET蔡徐坤同款惠普星14吧...