队列的相关知识

目录

 创建

初始化

销毁

头插

尾删

取出头

取出尾

数字个数

判空


队列的性质与特征

性质:一种先进先出的线性表 

特征:FIFO(先进先出)

实现:用数组和链表的都可以

例子:在生产者消费者模型用到了循环链表

模型:未来曲风队列是满的还是不满的,我们多加一个空间保证rear+1是front

 创建

typedef  struct Queue//避免老是传二级指针
{
	QNode* phead;
	QNode* tail;
	 int size;
 }Queue;

typedef struct QNode
{
	struct QNode* next;
	DataType val;
}QNode;

初始化

void QueueInit(Queue* p)
{
	assert(p);
	p->phead = p->tail=NULL;
	p->size = 0;
}

销毁

void QueueDestroy(Queue* p)
{
	assert(p);
	QNode* cur = p->phead;
	while (cur)
	{
		free(cur);
		cur = cur->next;
	}
	QueueInit(p);
}

头插

void QPush(Queue* p, DataType x)//插入先创建空间
{
	assert(p);
	QNode* newNode = (QNode*)malloc(sizeof(QNode));
	if (newNode = NULL)
	{
		printf("malloc failed");
		return;
	}
	newNode->next = NULL;
	newNode->val = x;

	if (p->phead == NULL)
	{
		p->phead = p->tail = newNode;
	}
	else
	{
		p->tail->next = newNode;	
		p->tail = newNode;
	}
	p->size++;
}

尾删

void Qpop(Queue* p)
{
	assert(p);
	assert(p->size);
	
	if (p->phead->next = NULL)
	{
		free(p->phead);
		p->phead = p->tail = NULL;
	}
	else
	{
		QNode* next = p->phead->next;
		free(p->phead);
		p->phead = next;
	}
	p->size--;
}

取出头

DataType QueueFront(Queue* p)
{
	assert(p);
	assert(p->phead);
	return p->phead->val;
}

取出尾

DataType QueueBack(Queue* p)
{
	assert(p);
	assert(p->tail);
	return p->tail->val;
}

数字个数

int QSize(Queue* p)
{
	assert(p);
	return p->size;
}

判空

bool QueueEmpty(Queue* p)
{
	assert(p);
	if (p->size == 0)
		return true;
	else
		return false;
}

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

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

相关文章

工单管理系统:开启企业降本增效的快车道-亿发

在现代企业的运营过程中,提升效率和降低成本是企业永恒的主题。传统的物流和售后管理方式往往依赖线下沟通,不仅效率低下,还存在流程无痕迹的问题,难以追溯责任,影响企业的整体运营效率。针对这些痛点,工单…

怎么把amr格式转换为mp3格式?这6个mp3格式转换方法不容错过!

怎么把amr格式转换为mp3格式?AMR(自适应多速率)是一种音频编码格式,通常用于存储基于语音的文件,例如语音记录和VoIP应用,在3G移动设备上使用。它具有非常高的压缩比,导致声音质量较差。早期的安…

【LLM 评估】GLUE benchmark:NLU 的多任务 benchmark

论文:GLUE: A Multi-Task Benchmark and Analysis Platform for Natural Language Understanding ⭐⭐⭐⭐ arXiv:1804.07461, ICLR 2019 Site: https://gluebenchmark.com/ 文章目录 一、论文速读二、GLUE 任务列表2.1 CoLA(Corpus of Linguistic Accep…

pandas合并,拆分excel

目录 一:按照列进行拆分 二:将某几列的数据写入新excel 三:合并两个sheet数据到一个excel的一个sheet中 我们以商品销售明细为例,说明下excel的数据拆分和合并,我们的原始数据如下: 一:按照列进行拆分 现在我们需要统计下是否配送和支付方式为维度进行分组以后得数据…

【名企专访】|格行自有格行的骄傲,格行骄傲在哪?格行随身wifi火爆出圈的真实内幕!

最近刷视频在一个随身wifi的帖子下边看到,有个网友这样回复:“随身wifi行业真的该整治了,到处是跑路的,夸大宣传的,本来在线上买就是图个方便,现在搞得不敢买。本来利民的产品,被搞得乌烟瘴气&a…

【推荐】Prometheus+Grafana企业级监控预警实战

新鲜出炉!!!PrometheusGrafanaAlertmanager springboot 企业级监控预警实战课程,从0到1快速搭建企业监控预警平台,实现接口调用量统计,接口请求耗时统计…… 详情请戳 https://edu.csdn.net/course/detai…

Clonable接口和拷贝

Hello~小伙伴们!本篇学习Clonable接口与深拷贝,一起往下看吧~(画图水平有限,两张图,,我真的画了巨久,求路过的朋友来个3连~阿阿阿~~~) 目录 1、Clonable接口概念 2、拷贝 2、1浅拷贝 2、2深拷贝 1、Clon…

生命在于学习——Python人工智能原理(2.3.3)

三、Python的数据类型 3.2 Python的组合数据类型 特点:表示多个元素的组合,可以包含不同类型的元素,甚至是其他的组合数据类型。 在内存中通常需要额外的空间来存储元素间的关系。 组合数据类型能够将多个同类型或不同类型的数据组织起来&a…

MAS0902量产工具分享,MAS0902A开卡教程,MAS0901量产工具下载

MAS0902和MAS1102都是基于SATA3.2技术开发的DRAM-less SSD控制芯片,简单来说就是SATA协议无缓存主控。下面是我摸索的麦光黑金300 240G SSD开卡修复简易教程,也就是MAS0902量产过程: 注意:开卡转接线必须要用ASM1153E或JMS578主控…

Linux部署Java项目至云服务器

文章目录 1.服务器环境2.发布部署过程2.1 执行SQL脚本2.2 修改代码中数据源的配置2.3 修改配置中的日志级别与日志文件路径2.4 打包Java程序2.5 上传到服务器2.6 后台运行2.7 服务器开放对应的端口2.8 访问验证 1.服务器环境 要将我们的项目部署到云服务器上我们就需要先有一个…

独一无二的设计模式——单例模式(python实现)

1. 引言 大家好,今天我们来聊聊设计模式中的“独一无二”——单例模式。想象一下,我们在开发一个复杂的软件系统,需要一个全局唯一的配置管理器,或者一个统一的日志记录器;如果每次使用这些功能都要创建新的实例&…

SpringCloud中复制模块然后粘贴,文件图标缺少蓝色方块

再maven中点击+号,把当前pom文件交给maven管理即可

【UE 网络】RPC远程过程调用 入门篇

目录 0 引言1 RPC基本概念1.1 定义1.2 分类 2 RPC的使用2.1 Client RPC2.2 Server RPC2.3 Multicast RPC 🙋‍♂️ 作者:海码007📜 专栏:UE虚幻引擎专栏💥 标题:【UE 网络】RPC远程过程调用 入门篇❣️ 寄语…

汇聚荣拼多多运营好吗?

在当前电商行业竞争激烈的背景下,拼多多凭借其独特的商业模式和市场定位迅速崛起,成为众多商家和品牌争相入驻的平台。对于“汇聚荣拼多多运营好吗?”这一问题,答案是肯定的。拼多多不仅提供了一个广阔的市场空间,还通过其创新的…

如何在 SQL 中删除一条记录?

如何在 SQL 中删除一条记录? 在 SQL 中,您可以使用DELETE查询和WHERE子句删除表中的一条记录。在本文中,我将向您介绍如何使用DELETE查询和WHERE子句删除记录。我还将向您展示如何一次从表中删除多条记录 如何在 SQL 中使用 DELETE 这是使…

【多维动态规划】Leetcode 97. 交错字符串【中等】

交错字符串 给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串 子字符串 是字符串中连续的 非空 字符序列。 s s1 s2 … snt…

40V 60V 80V 100V 400V高压LDO三端稳压器选择,技术参数

40V 60V 80V 100V 400V高压LDO三端稳压器选择,技术参数

网页如何快速被收录?

其实就是要要吸引搜索引擎爬虫更快地抓取你的网页,想让爬虫爬取网页,首要做的自然是创建并提交站点地图。站点地图是搜索引擎了解你网站结构的重要工具。它可以帮助爬虫更快地发现和抓取你网站上的所有重要页面。通过Google Search Console提交站点地图&…

Webpack: 构建微前端应用

Module Federation 通常译作“模块联邦”,是 Webpack 5 新引入的一种远程模块动态加载、运行技术。MF 允许我们将原本单个巨大应用按我们理想的方式拆分成多个体积更小、职责更内聚的小应用形式,理想情况下各个应用能够实现独立部署、独立开发(不同应用甚…

Unity保存玩家的数据到文件中(Unity的二进制序列化)

文章目录 文章运行环境什么是二进制序列化读写文件构造函数 自定义二进制序列化 文章运行环境 Unity2022 什么是二进制序列化 Unity中的二进制序列化是一种将游戏对象或数据结构转换为二进制格式的过程,以便于存储或网络传输。这使数据能够以高效的方式保存&…