数据结构(队列Queue)

news2024/12/27 12:35:42

文章目录

  • 一、队列
    • 1、队列的定义
    • 2、队列的顺序实现
      • 2.1、初始化
      • 2.2、入队
      • 2.3、出队
      • 2.4、查找
      • 2.5、判断队列 满/空
    • 3、队列的链式实现
      • 3.1、初始化
      • 3.2、入队
      • 3.3、出队
    • 4、双端队列

一、队列

1、队列的定义

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、队列的顺序实现

在这里插入图片描述

在这里插入图片描述

2.1、初始化

在这里插入图片描述

//初始化
void InitQueue(SqQueue &Q){
	Q.front=Q.rear=0;
} 
//判断是否为空
bool QueueEmpty(SqQueue Q){
	if(Q.front==Q.rear)
		return false;
	else 
		return true; 
} 

2.2、入队

在这里插入图片描述

队列已经满了的判断条件
队列已满的条件:rear==MaxSize ???
在这里插入图片描述

bool EnQueue(SqQueue &Q,int x){
	//判断队列是否已满
	if((Q.rear+1)%MaxSize==Q.front)
		return false;
	Q.data[Q.rear]=x;
	Q.rear=(Q.rear+1)%MaxSize;
	return true;
}

形成循环队列

2.3、出队

在这里插入图片描述

bool BeQueue(SqQueue &Q,int &x){
	if(Q.front==Q.rear)
		return false;
	x=Q.data[Q.front];
	Q.front=(Q.front+1)%MaxSize;
	return true;
} 

2.4、查找

bool GerHead(SqQueue Q,int &x){
	if(Q.front==Q.rear)
		return false;
	x=Q.data[Q.front];
	return true;
} 

队列中的元素个数
(rear+MaxSize-front)%MaxSize
在这里插入图片描述

2.5、判断队列 满/空

定义一个size,满是size=MaxSize,空是size=0
请添加图片描述
定义一个tag,删除操作tag=0,插入操作tag=1,判断,

队满:front==rear&&tag==1,队空:front==rear&&tag==0

请添加图片描述
两种对尾指向的方式
在这里插入图片描述
牺牲一个空间,判断对满,还是队空
在这里插入图片描述
在这里插入图片描述

3、队列的链式实现

在这里插入图片描述

在这里插入图片描述

3.1、初始化

在这里插入图片描述

void InitQueue(LinkQueue &Q){
	Q.front=Q.rear=(LinkNode*)malloc(sizeof(LinkNode));
	Q.front=NULL;
} 

3.2、入队

在这里插入图片描述

void EnQueue(LinkQueue &Q,int x){
	LinkNode *s=(LinkNode*)malloc(sizeof(LinkNode));
	s->data=x;
	s->next=NULL;
	Q.rear->next=s;
	Q.rear=s; 
}

在这里插入图片描述

3.3、出队

在这里插入图片描述
在这里插入图片描述

4、双端队列

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

微信小程序(二十一)css变量-定义页面主题色

注释很详细,直接上代码 上一篇 新增内容: 1.使用css变量 2.消除按钮白块影响 3.修改图标样式 源码: npmTest.json {"navigationStyle": "custom","usingComponents": {//引入vant组件"van-nav-bar"…

使用py-spy对python程序进行性能诊断学习

py-spy简介 py-spy是一个用Rust编写的轻量级Python分析工具,它能够监视正在运行的Python程序,而不需要修改代码或者重新启动程序。Py-spy可以在不影响程序运行的情况下,采集程序运行时的信息,生成火焰图(flame graph&…

API:低代码平台的强大秘诀与无限可能

应用编程接口 (API) 是应用程序以可编程格式访问其关键能力和功能的一种方式,从而其他应用程序可以利用它们。API 本质上支持应用程序之间的无缝数据流,使开发人员能够在应用程序中添加更多功能,而无需依赖大量编码。 举一个简单的例子。 您…

55-工厂模式创建对象,instanceof检测,自定义构造函数

1.对象的概括JavaScript中所有事物都是对象:字符串,数值,数组,函数。对象就是带有属性和方法的特殊数据类型。当函数被保存为一个对象的属性时,它就可以称为这个对象的方法(例如方法模式调用 this指向调用对象) 2.用字面量/自定义对象的方式创建单个对象 <script>/…

华为三层交换机与防火墙对接配置上网示例

三层交换机与防火墙对接上网配置示例 组网图形 图1 三层交换机与防火墙对接上网组网图 三层交换机简介配置注意事项组网需求配置思路操作步骤配置文件 三层交换机简介 三层交换机是具有路由功能的交换机&#xff0c;由于路由属于OSI模型中第三层网络层的功能&#xff0c;所以…

别再做“背锅侠”!软件测试工程师被开发吐槽,如何应对?

作为一名软件测试工程师&#xff0c;我们的角色可以算是“战场上的后勤”&#xff0c;战役的胜败和所有团队人员都息息相关。但是难免碰到战役失败后&#xff0c;很多团队互相推脱的局面&#xff0c;而测试人员就是所有团队中的弱势群体&#xff0c;自然是首当其冲的背锅侠&…

【基础算法练习】单调队列与单调栈模板

文章目录 单调栈模板题代码模板算法思想 单调队列模板题代码模板算法思想 单调栈 模板题 题目链接&#xff1a;ACwing 830. 单调栈 代码模板 #include <iostream> #include <vector> #include <stack>using namespace std;const int N 100010;vector<…

群辉开启WebDav服务+cpolar内网穿透实现移动端ES文件浏览器远程访问本地NAS文件

文章目录 1. 安装启用WebDAV2. 安装cpolar3. 配置公网访问地址4. 公网测试连接5. 固定连接公网地址6. 使用固定地址测试连接 本文主要介绍如何在群辉中开启WebDav服务&#xff0c;并结合cpolar内网穿透工具生成的公网地址&#xff0c;通过移动客户端ES文件浏览器即可实现移动设…

Centos7 单机单网卡安装 OpenStack

本文实际环境 vmware 虚拟机&#xff1a; 网络采用的桥接方式&#xff0c;和我的物理网络在一个网段 CPU开启虚拟化 虚拟机安装系统后&#xff0c;配置上静态IP&#xff0c;能连接外网就行了&#xff0c;最好是把内核升级到5.19以上 1、初始化准备 1&#xff09;关闭防火墙 …

有趣的css - 第一个字符串自动生成文字图标

在设计 app 界面的时候&#xff0c;要展示一部分最新的资讯入口&#xff0c;然后出了一张下面的 UI 稿。 UI稿截图如下&#xff1a; 列表设计比较简单&#xff0c;就是列表前面的圆形图标这块&#xff0c;我个人觉得还是有点意思的。 一般的话&#xff0c;大概率都是用js限制…

ASP .NET Core Api 使用过滤器

过滤器说明 过滤器与中间件很相似&#xff0c;过滤器&#xff08;Filters&#xff09;可在管道&#xff08;pipeline&#xff09;特定阶段&#xff08;particular stage&#xff09;前后执行操作。可以将过滤器视为拦截器&#xff08;interceptors&#xff09;。 过滤器级别范围…

《SPSS统计学基础与实证研究应用精解》视频讲解:在线分析处理报告

《SPSS统计学基础与实证研究应用精解》5.1 视频讲解 视频为《SPSS统计学基础与实证研究应用精解》张甜 杨维忠著 清华大学出版社 一书的随书赠送视频讲解5.1节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。本书旨在手把手教会使…

RabbitMQ“延时队列“

1.RabbitMQ"延时队列" 延迟队列存储的对象是对应的延迟消息&#xff0c;所谓“延迟消息”是指当消息被发送以后&#xff0c;并不想让消费者立刻拿到消息&#xff0c;而是等待特定时间后&#xff0c;消费者才能拿到这个消息进行消费 注意RabbitMQ并没有延时队列慨念,…

图片中的水印怎么去掉?教你三个去水印方法

在拍摄照片时&#xff0c;有时候会遇到不期而遇的路人出现在镜头中&#xff0c;给照片带来不必要的干扰。这时候我们就需要把路人给去掉&#xff0c;让照片变的更加完美。下面我将给大家分享三个把照片中的路人去掉的小妙招。 一、水印云 水印云是一款非常实用的图片处理工具…

机器学习3-简单线性回归

需求&#xff1a; 现在要根据学生的学习时间来预测学习成绩&#xff0c;给出现有数据&#xff0c;用来训练模型并预测新数据。 分析&#xff1a; 使用线性回归模型。 代码&#xff1a; import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection i…

Day02-课后练习2(数据类型和运算符)

参考答案博客链接跳转 文章目录 巩固题1、案例&#xff1a;今天是周2&#xff0c;100天以后是周几&#xff1f;2、案例&#xff1a;求三个整数x,y,z中的最大值3、案例&#xff1a;判断今年是否是闰年4、分析如下代码的计算结果5、分析如下代码的计算结果6、分析如下代码的计算…

SpringBoot之JWT登录

JWT JSON Web Token&#xff08;JSON Web令牌&#xff09; 是一个开放标准(rfc7519)&#xff0c;它定义了一种紧凑的、自包含的方式&#xff0c;用于在各方之间以JSON对象安全地传输信息。此信息可以验证和信任&#xff0c;因为它是数字签名的。jwt可以使用秘密〈使用HNAC算法…

做人力RPO蓝海项目需要有人力资源工作经验吗?

在当前的商业环境中&#xff0c;人力资源外包服务已经成为了许多企业的选择。其中&#xff0c;人力RPO(招聘流程外包)作为人力资源外包的一种形式&#xff0c;尤其在蓝海项目中备受瞩目。那么&#xff0c;对于想要涉足人力RPO领域的个人或企业来说&#xff0c;是否需要具备丰富…

uniapp 解决键盘弹出页面内容挤压问题

page.json 配置 加 “app-plus”: { “softinputMode”: “adjustResize” } {"path": "pages/jxx/xx","style": {"navigationBarTitleText": "贺卡DIY","enablePullDownRefresh": false,"app-plus": {…

Mysql查询数据

1 基本查询语句 MySQL从数据表中查询数据的基本语句为SELECT语句。SELECT语句的基本格式是&#xff1a; 2 单表查询 2.1 查询所有字段 SELECT * FROM 表名; 2.2 在SELECT语句中指定所有字段 SELECT f_id, s_id ,f_name, f_price FROM fruits; 2.3 查询单个字段 SELECT 列名FR…