队列及其应用

实验内容

请设计一个简单的模拟银行排队系统,要求程序具有以下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;
} 

结果展现

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue 学习笔记 总结

Vue.js 教程 | 菜鸟教程 (runoob.com) 放一下课上的内容 Vue练习 1、练习要求和实验2的用户注册一样&#xff0c;当用户输入后&#xff0c;能在下方显示用户输入的各项内容&#xff08;不需要实现【重置】按钮&#xff09; 2、实验报告中的实验小结部分来谈谈用JS、jQuery和…

流量分析——一、蚁剑流量特征

君衍. 一、Webshell特征流量分析二、环境介绍三、使用Wireshark进行流量分析1、环境说明2、HTTP追踪流分析3、蚁剑请求体中代码块解读 四、使用BurpSurite进行流量分析1、环境配置2、抓包分析 六、总结 一、Webshell特征流量分析 对于重保、护网等攻防演练的防守方来说&#x…

AIGC专栏11——EasyAnimateV2结构详解与Lora训练 最大支持768x768 144帧视频生成

AIGC专栏11——EasyAnimateV2结构详解与Lora训练 最大支持768x768 144帧视频生成 学习前言源码下载地址EasyAnimate V2简介技术储备Diffusion Transformer (DiT)Motion ModuleU-VITLora 算法细节算法组成视频VAE视频DIT 数据处理视频分割视频筛选视频描述 模型训练视频VAE视频D…

【数智化CIO展】吉家宠物CIO张志伟:深度挖掘数据价值是数字化发展趋势,才能实现企业精细化运营...

张志伟 本文由吉家宠物CIO张志伟投递并参与由数据猿联合上海大数据联盟共同推出的《2024中国数智化转型升级优秀CIO》榜单/奖项评选。丨推荐企业&#xff1a;观远数据 大数据产业创新服务媒体 ——聚焦数据 改变商业 中国“宠物经济”热潮不断攀升&#xff0c;国内宠物市场的竞…

InnoDB存储引擎非常重要的一个机制--MVCC(多版本并发控制)

Mysql是如何实现隔离性的&#xff1f;&#xff08;锁MVCC&#xff09; 隔离性是指一个事务内部的操作以及操作的数据对正在进行的其他事务是隔离的&#xff0c;并发执行的各个事务之间不能相互干扰。隔离性可以防止多个事务并发执行时&#xff0c;可能存在交叉执行导致数据的不…

Android 如何保证开启debug模式之后再启动

很多时候会需要debug看Android启动时候的一些数据&#xff0c;但很多时候会存在自己开启debug后app已经过了自己要debug的那段代码的时机了。 那么怎么样可以保证一定能让启动后不会错过自己要debug的那段代码执行的时机呢&#xff1f; 可以用下面这行命令&#xff0c;其中co…

记忆化搜索汇总

记忆化搜索简介 记忆化搜索&#xff08;Memoization Search&#xff09;&#xff1a;是一种通过存储已经遍历过的状态信息&#xff0c;从而避免对同一状态重复遍历的搜索算法。 记忆化搜索是动态规划的一种实现方式。在记忆化搜索中&#xff0c;当算法需要计算某个子问题的结果…

Nginx+Tomcat负载均衡、动静分离集群

目录 1.Nginx负载均衡 1.1 负载均衡概念 1.2 负载均衡原理 1.3 Nginx配置反向代理 1.3.1 反向代理概念 1.3.2 反向代理主要参数 2.Nginx动静分离 2.1 动静分离的概念 2.2 Nginx 静态处理优势 2.3 动静分离原理 3. NginxTomcat动静分离的实验设计 3.1 准备三台虚拟机…

Java速成要多久?这篇文章告诉你答案!

Java速成要多久&#xff1f;这篇文章告诉你答案&#xff01; Java作为一门用途广泛且经久不衰的编程语言&#xff0c;吸引了无数学习者的目光。许多人希望能够快速掌握Java&#xff0c;以便进入软件开发行业或者提升自身的竞争力。那么&#xff0c;Java速成究竟要多久呢&#x…

【遗传算法】【机器学习】【Python】常见交叉方法(二)、多点交叉和均匀交叉

一、遗传算法流程图 交叉过程即存在于上图的”交叉“&#xff08;crossover&#xff09;步骤中。 二、多点交叉 多点交叉的原理就是&#xff0c;随机地从父代两个基因型中&#xff0c;选择n个位点进行交换&#xff0c;其中n小于等于父代基因型长度&#xff08;假设双亲基因长…

基于小波变换和峰值搜索的光谱检测matlab仿真,带GUI界面

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于小波变换和峰值搜索的光谱检测matlab仿真,带GUI界面.对光谱数据的成分进行提取&#xff0c;分析CO2&#xff0c;SO2&#xff0c;CO以及CH4四种成分比例。 2.…

【越界写null字节】ACTF2023 easy-netlink

前言 最近在矩阵杯遇到了一道 generic netlink 相关的内核题&#xff0c;然后就简单学习了一下 generic netlink 相关概念&#xff0c;然后又找了一到与 generic netlink 相关的题目。简单来说 generic netlink 相关的题目仅仅是将用户态与内核态的交互方式从传统的 ioctl 变成…

使用from…import语句导入模块

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在使用import语句导入模块时&#xff0c;每执行一条import语句都会创建一个新的命名空间&#xff08;namespace&#xff09;&#xff0c;并且在该命名…

类的特殊成员函数

使用类的嵌套&#xff0c;并自定义析构函数 #include <iostream>using namespace std; class Per{ private:string name;int age;double hight;double weight; public:Per(string name,int age,double hight,double weight):name(name),age(age),hight(hight),weight(we…

当边缘计算用在定位设备

什么是边缘计算&#xff1f; 边缘计算是个比较高大上的概念&#xff0c;在这里就不提众多官方与非官方的定义了&#xff0c;只说说自己的理解。 边缘计算就是在最靠近物理设备的使用现场&#xff0c;利用有限的硬件资源&#xff0c;完成设备层数据采集、协议转换、数据上传、…

微信小程序开发的详细解读

目录 小程序的ID 小程序的项目结构 小程序调试基础库 小程序调试 小程序配置文件 Pages配置 Windows配置 tabbar配置 页面配置 项目配置文件 sitemap文件配置 样式与组件 小程序常用组件 轮播图组件 图片组件 Text组件 跳转方式 滚动方式 字体图表使用 背景…

用python写一个基于PyQt5和OpenAI的智能问答项目

摘要&#xff1a; 使用python写一个可以对话的智能问答机器人&#xff0c;界面是使用PyQt5写的&#xff0c;通过调用OpenAl的免费接口&#xff0c;实现实时聊天功能。 1.申请免费的API key 前往页面https://github.com/chatanywhere/GPT_API_free 点击下面链接&#xff1a; …

寻找 llvm v3.5 的目标代码生成模块

summ.c --(clang -emit-llvm -S)--> summ.ll --(llvm-as)----> summ.bc --(llc)---> summ.s opt -S -O2 实施机器无关优化&#xff0c;跟后端目标代码生成无关&#xff0c;故llc是llvm的后端。 1&#xff0c;示例代码 summ.c int adddd(int aaa, in…

Rethinking overlooked aspects in vision-language models

探讨多模态视觉语言模型的一些有趣结论欢迎关注 CVHub!https://mp.weixin.qq.com/s/zouNu-g-33_7JoX3Uscxtw1.Introduction 多模态模型架构上的变化不大,数据的差距比较大,输入分辨率和输入llm的视觉token大小是比较关键的,适配器,VIT和语言模型则不是那么关键。InternVL-…

【ArcGIS微课1000例】0017:ArcGIS中如何将kml(kmz)文件转json(geojson)?

文章目录 一、kml获取方式二、kml转图层三、图层转json一、kml获取方式 kml文件是一种很常用的数据格式,可以从谷歌地球(googleearth)获取某一个地区的kml范围文件,如青海湖(做好的kml文件可以从配套实验数据包0117.rar中获取)。 二、kml转图层 打开【KML转图层】工具,…