队列及其应用

news2024/10/6 8:32:03

实验内容

请设计一个简单的模拟银行排队系统,要求程序具有以下4项菜单:
1.取号。选择该菜单后,为客户产生一个排队号。
2.叫号。选择该菜单后,显示可服务的客户排队号。
3.查看队伍。从队首到队尾列出所有排队客户的排队号。
4.退出系统

完整代码

#include <iostream>
#include<malloc.h> 
using namespace std;
//队列及其应用
#define datatype int
#define MAX 30
typedef struct node
{
	datatype data;
	struct node *next;
}QNode; 
typedef struct{
	QNode *front,*rear;//头尾指针
	int num; 
}LQueue;
//置一个空链队
LQueue* init_LQueue()
{
	LQueue* q;
	QNode *p;
	q=(LQueue*)malloc(sizeof(LQueue));
	//申请头尾指针结点
	p=(QNode*)malloc(sizeof(QNode));
	//申请链队头结点
	p->next=NULL;
	q->front=p;
	q->rear=p;
	q->num=0;
	return q;
}
void In_LQueue(LQueue *q,datatype x)//入队 
{
	QNode* p;
	p=(QNode*)malloc(sizeof(QNode));
	p->data=x;
	p->next=NULL;
	q->rear->next=p;
	q->rear=p;
	q->num++;
}
int Empty_LQueue(LQueue *q)//判空
{
	if(q->front==q->rear) return 1;
	else return 0;
} 
int Out_LQueue(LQueue *q,datatype *x)//出队
{
	QNode *p;
	if(Empty_LQueue(q))
	{
		cout<<"队空";
		return 0;
	}
	else{
		p=q->front->next;
		q->front->next=p->next;
		*x=p->data;
		free(p);
		if(q->front->next==NULL)
		q->rear=q->front;
		
		q->num--;
		
		return 1;
	}
} 
void Display(LQueue* q)
{
	datatype e;
	QNode* p=q->front->next;
	if(Empty_LQueue(q))
	{
		cout<<"无"<<endl;
	}
//	for(int i= 0;i<=q->num;i++)
//	{
//		cout<<p->data<<" ";
//		p=p->next;
//	}//会直接跳出循环 
else{
	while(p!=NULL)
	{
		cout<<p->data<<" ";
		p=p->next;
	}
}
	cout<<endl;
}

int  Display_num(LQueue* q)
{
	QNode* p=q->front->next;	
	return p->data;
}

int main()
{
	cout<<"---------------------银行排队模拟------------------------"<<endl;
	cout<<"    (1)取号"<<endl;
	cout<<"    (2)叫号"<<endl;
	cout<<"    (3)查看队伍"<<endl;
	cout<<"    (0)取号"<<endl;
	cout<<"---------------------------------------------------------"<<endl;
	
	LQueue *L;
	L=init_LQueue();//用来放30个号码 
	LQueue *Q;// 银行系统用的队列 
	Q=init_LQueue();
	

	int a,i;
	for(i=1;i<=MAX;i++)//过号作废 假设一共30个号 
	{
		In_LQueue(L,i); 
	}
		Display(L);
		
//想要的是,i取L中的,从1开始,叫号一个废一个。 
	//for(int i =1;i<=L->num;i++)//每次进入循环都是不同的数 第几次进入i就是几 
while(1)
	{

	
	cout<<"请选择(0-3): "; 
				cin>>a;
					switch(a){				
								case 1:	
								//for(i;i<4;i++)//想要让i成动态的,选择1一次i+一次
								//现在i是一次性把for循环走了 
							//	{
									//	In_LQueue(L,i);
									In_LQueue(Q,L->front->next->data);//取号 
										cout<<"您的排队序号是"<<L->front->next->data<<",";
										cout<<"前面还有"<< (Q->num)-1<<"人" <<endl;
										L->front->next=L->front->next->next;
															
									break;
								case 2:
									cout<<"请序号"<<Display_num(Q)<<"的客户办理业务!"<<endl;
										Out_LQueue(Q,&(L->front->data));
										 
										break;
								case 3:
									cout<<"目前正在排队的:";
									Display(Q);
									break;			
								case 0:
									cout<<"--退出银行--"<<endl; 
									break;	
								default:	
								cout<<"输入错误!!!" <<endl;
								break;		
								
							}
						
		
				if (a==0)//跳出while 
				{
					break;
				}
	} 
	return 0;
} 

结果展现

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1792567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

94、python-第三阶段-4-数据计算-map方法

直接运行会报错&#xff0c;需要配置下python环境变量 from pyspark import SparkConf,SparkContext import os os.environ[PYSPARK_PYTHON]"D:/Program Files/Python/Python3.13/python.exe" conf SparkConf().setMaster("local[*]").setAppName("…

【数据结构】二叉树的层序遍历~动画超详解

目录 1 什么是层序遍历2 二叉树层序遍历的基本思路3 二叉树层序遍历的实现 1 什么是层序遍历 我们从字面意思就明白,所谓层序,就是一层一层按顺序去遍历一个二叉树,这和我们之前了解的按前中后序遍历方式完全不同 比方说这颗二叉树: 前序遍历: 层序遍历: 2 二叉树层序遍历的…

通过 AI Edge Torch 生成式 API 在设备上使用自定义大语言模型

作者 / 首席工程师 Cormac Brick&#xff0c;软件工程师 Haoliang Zhang 我们很高兴地发布 AI Edge Torch 生成式 API&#xff0c;它能将开发者用 PyTorch 编写的高性能大语言模型 (LLM) 部署至 TensorFlow Lite (TFLite) 运行时&#xff0c;从而无缝地将新的设备端生成式 AI 模…

申请医疗设备注册变更时,需要补充考虑网络安全的情况有哪些?

在申请医疗器械设备注册变更时&#xff0c;需要补充网络安全的情况主要包括以下几点&#xff1a; 网络安全功能更新&#xff1a;如果医疗器械的自研软件发生网络安全功能更新&#xff0c;或者合并网络安全补丁更新的情形&#xff0c;需要单独提交一份自研软件网络安全功能更新…

计算机网络ppt和课后题总结(下)

常用端口总结 计算机网络中&#xff0c;端口是TCP/IP协议的一部分&#xff0c;用于标识运行在同一台计算机上的不同服务。端口号是一个16位的数字&#xff0c;范围从0到65535。通常&#xff0c;0到1023的端口被称为“熟知端口”或“系统端口”&#xff0c;它们被保留给一些标准…

springboot项目中第三方jar包打包进jar包

springboot项目中&#xff0c;如果手动引入了jar包&#xff0c;打包时不会将手动引入的第三方jar包打包进价包里&#xff0c;如何处理&#xff1f; 若第三方的jar包的lib和src同级&#xff0c;则maven打包时默认不会将lib下的jar包打包进jar包&#xff0c;处理方式有两种&#…

康谋技术 | 自动驾驶:揭秘高精度时间同步技术(二)

在自动驾驶中&#xff0c;对车辆外界环境进行感知需要用到很多传感器的数据&#xff08;Lidar&#xff0c;Camera&#xff0c;GPS/IMU&#xff09;&#xff0c;如果计算中心接收到的各传感器消息时间不统一&#xff0c;则会造成例如障碍物识别不准等问题。 为了对各类传感器进…

数据结构与算法-12_二叉搜索树

文章目录 1.概述2.实现定义节点查询Comparable最小最大新增前驱后继删除找小的找大的找之间小结 3.习题E01. 删除节点-Leetcode 450E02. 新增节点-Leetcode 701E03. 查询节点-Leetcode 700E04. 验证二叉搜索树-Leetcode 98E05. 求范围和-Leetcode 938E06. 根据前序遍历结果构造…

【面试题】创建两个线程交替打印100以内数字(一个打印偶数一个打印奇数)

阅读导航 一、问题概述二、解决思路三、代码实现四、代码优化 一、问题概述 面试官&#xff1a;C多线程了解吗&#xff1f;你给我写一下&#xff0c;起两个线程交替打印0~100的奇偶数。就是有两个线程&#xff0c;一个线程打印奇数另一个打印偶数&#xff0c;它们交替输出&…

读AI未来进行式笔记04数字医疗与机器人

1. 数字医疗 1.1. 20世纪的“现代医学”得益于史无前例的科学突破&#xff0c;使得医疗的方方面面都得到改善&#xff0c;让人类预期寿命从1900年的31岁提高到2017年的72岁 1.2. 现有的医疗数据库和流程将实现数字化 1.2.1. 患者记录 1.2.…

泛微开发修炼之旅--06自定义Action接口开发示例、源码及使用场景

文章链接&#xff1a;泛微开发修炼之旅--06自定义Action接口开发示例、源码及使用场景

创新实训2024.06.02日志:SSE、流式输出以及基于MTPE技术的MT-SSE技术

1. Why SSE&#xff1f; 之所以要做SSE&#xff0c;是因为在开发、调试以及使用我们开发的软件时&#xff0c;我发现消息的响应时间会很长。之所以会这样最主要的原因是&#xff0c;MTPE这项基于CoT的技术&#xff0c;本质上是多个单一的提示工程有机地组合在一起对大模型生成…

Java中常见错误-泛型擦除及桥接方法问题及解决方案

Java中泛型擦除及桥接方法 泛型擦除无界擦除上界擦除下界擦除 桥接方法演示案例wrong1wrong2wrong3right 原理总结 泛型擦除 ​ 泛型擦除是Java泛型机制的一个特性&#xff0c;它意味着**在编译期间&#xff0c;所有的泛型信息都会被移除&#xff0c;而在运行时&#xff0c;所…

html+CSS+js部分基础运用15

1、完成输入框内容的实时反向输出。 2、银行账户余额变动自动通知项目。 设计要求&#xff1a;单击按钮后&#xff0c;余额按照输入框的数额减少&#xff0c;同时将按钮式的提示信息&#xff08;金额&#xff09;同步改变。利用侦听属性实现余额发生变化时发出提示信息&#x…

python-flask项目的服务器线上部署

在部署这部分我首先尝试了宝塔面板&#xff0c;始终连接失败 换了一种思路选择了Xshell成功连接 首先我们需要下载个免费版本的Xshell 免费的&#xff1a;家庭/学校免费 - NetSarang Website 下载完毕打开 1新建-> 输入服务器的账号密码&#xff1a; 在所有会话中点击自…

NDIS Filter开发-PNP响应和安装

NDIS filter驱动可能是最容易生成的驱动之一&#xff0c;如果你安装了VS 2015 WDK之后&#xff0c;你可以直接生成一个能运行的Filter驱动&#xff0c;它一般是ndislwf。 和大部分硬件不同&#xff0c;NDIS Filter驱动介于软件和硬件抽象层之上&#xff0c;它和硬件相关&…

工业无线wifi系统搭配高速路由,解决联网及数据传输

​面对日益复杂的工业应用场景,企业对无线网络的高速、可靠和安全提出了更高要求。星创易联SR600系列多网口4G路由器应运而生,为工业无线WiFi系统提供了一个性能卓越的高速路由方案。&#xff08;key-iot.com/iotlist/sr600-5.html&#xff09; SR600路由器集4G LTE、虚拟专用…

c++(内存分配,构造,析构)

#include <iostream>using namespace std; class Per { private:string name;int age;double *height;double *weigh; public://无参构造Per(){cout << "Per::无参构造" << endl;}//有参构造Per(string name,int age,double height,double weigh):…

C++候捷stl-视频笔记4

一个万用的hash function 哈希函数的形式&#xff0c;一种是一般函数(右边)&#xff0c;一种是成员函数(左边)&#xff0c;类的对象将成为函数对象 具体做法例子。直接把属性的所有hash值加起来&#xff0c;会在hashtable中会产生很多的碰撞&#xff0c;放在同一个bucket中的元…

Nginx的https功能

一.HTTPS功能简介 Web网站的登录页面都是使用https加密传输的&#xff0c;加密数据以保障数据的安全&#xff0c;HTTPS能够加密信息&#xff0c;以免敏感信息被第三方获取&#xff0c;所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议&#xff0c;HTTPS其实…