队列的相关知识

news2024/11/23 15:50:45

目录

 创建

初始化

销毁

头插

尾删

取出头

取出尾

数字个数

判空


队列的性质与特征

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

特征: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;
}

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

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

相关文章

比尔盖茨:Agent将是AI最大的赛道

Agent不仅将改变人们与计算机的互动方式,还将颠覆软件行业,引发自从我们从键入命令到点击图标以来计算机领域的最大革命。 保罗艾伦和我一起创立微软的至今,我对软件的热爱至今依然不减。 然而,尽管在过去的几十年中软件已经取得…

vue插槽的简单使用

默认插槽 1.在Category中创建插槽 <slot>默认值<slot/> 2.在App中使用 <Category tittle"美食"> <ul ><li v-for"(l,index) in foods" :key"index">{{l}}</li></ul> </Category> 3.运行后的…

文华缠论笔线段主图指南公式源码去包含

X:10; 笔参数:5; 段参数:6; 笔低A:LOW<LLV(LOW,笔参数),NODRAW; 笔高A:HIGH>HHV(HIGH,笔参数),NODRAW; 笔低:笔低A AND 笔高A0,NODRAW; 笔高:笔高A AND 笔低A0,NODRAW; VP1:BACKSET(笔高,BARSLAST(笔低)1); VP2:BACKSET(笔低,BARSLAST(笔高)1); VP3:(笔低A AND …

全网最详细Gradio教程系列——浏览器集成部署Gradio-Lite

全网最详细Gradio教程系列——浏览器集成Gradio-Lite 前言本篇摘要4 浏览器集成Gradio-Lite4.1 Gradio-Lite介绍4.2 构建Hello World例程4.3 routines4.3.1 multiple files4.3.2 Additional Requirements4.3.3 SharedWorker mode4.3.4 Code and Demo Playground 4.4 与Transfor…

OpenCV学习之cv2.imshow()函数

OpenCV学习之cv2.imshow()函数 一、简介 cv2.imshow 是 OpenCV 库中用于显示图像的基本函数之一。在图像处理和计算机视觉的过程中&#xff0c;使用该函数可以快速预览处理后的图像&#xff0c;便于调试和结果展示。 二、基本语法 cv2.imshow(WindowName, Imgmat)三、参数说…

Webpack: 借助 Babel+TS+ESLint 构建现代 JS 工程环境

概述 Webpack 场景下处理 JavaScript 的三种常用工具&#xff1a;Babel、TypeScript、ESLint 的历史背景、功能以及接入 Webpack 的步骤借助这些工具&#xff0c;我们能构建出更健壮、优雅的 JavaScript 应用 使用 Babel ECMAScript 6.0(简称 ES6) 版本补充了大量提升 JavaSc…

人生最有力,最棒的十句话!

人生最有力&#xff0c;最棒的十句话 1、允许一切事发生&#xff0c;所有一切发生的事不是你能阻挡了的&#xff0c;你接受&#xff0c;他也发生&#xff0c;你不接受&#xff0c;他也发生&#xff0c;你还不如坦然面对接受现实。 2、你焦虑的时候千万不要躺着啥也不干&#xf…

企业数据挖掘平台产品特色及合作案例介绍

泰迪企业数据挖掘平台是一款通用的、企业级、智能化的数据分析模型构建与数据应用场景设计工具&#xff0c;能够一体化地完成数据集成、模型构建、模型发布&#xff0c;为数据分析、探索、服务流程提供支撑&#xff0c;提供完整的数据探索、多数据源接入、特征处理、模型搭建、…

RpcRrovider分发rpc服务(OnMessage和Closure回调)

目录 1.完善rpcprovider.cc的OnConnection 2.完善rpcprovider.cc的OnMessage 3.完整rpcprovider.h 4.完整rpcprovider.cc 这篇文章主要完成&#xff0c;protobuf实现的数据序列化和反序列化。 1.完善rpcprovider.cc的OnConnection rpc的请求是短连接的&#xff0c;请求一次…

MathType2024最新官方无限永久试用版本下载

“我正在使用MathType&#xff0c;它让我的工作变得简单多了。”在中国科学院数学与系统科学研究院的一间办公室内&#xff0c;研究员张益唐兴奋地对《中国科学报》说。 这位因解决了数学界著名的“孪生素数猜想”而名声大噪的数学家&#xff0c;在谈到他最近使用的数学公式编辑…

如何把项目文文件/文件夹)上传到Gitee(全网最细)

目录 1、首先必须要有一个Gitee官网的账号 2、点击右上角的号&#xff0c;点击新建仓库 3、按照下图步骤&#xff0c;自己起仓库名字&#xff0c;开发语言 4、点击初始化readme文件 5、在自己的电脑上选择姚上传的文件夹&#xff0c;或者文件&#xff0c;这里都是一样的&a…

AI与学术的交响:ChatGPT辅助下的实验设计新篇章

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 在学术研究中&#xff0c;实验设计是确保研究质量和结果可信度的关键环节。这篇文章我们将为大家介绍如何利用ChatGPT辅助完成学术论文的实验设计&#xff0c;通过提供灵感、优化实验步…

【docker】2. 编排容器技术发展史(了解)

该篇文章介绍的主要是编排以及容器技术的发展史(了解即可)&#xff0c;如果想单纯学习docker命令操作可直接略过&#xff01;&#xff01;&#xff01; 容器技术发展史 Jail 时代 容器不是一个新概念或者新技术&#xff0c;很早就有了&#xff0c;只是近几年遇到了云计算&am…

昇思25天学习打卡营第4天|扩散模型

文章目录 昇思MindSpore应用实践基于MindSpore的Diffusion扩散模型1、Diffusion Models 简介2、构建 Diffusion Model 的准备工作3、Attention 机制4、条件 U-Net5、Diffusion 正向过程6、Diffusion 反向过程7、Diffusion 模型训练 Reference 昇思MindSpore应用实践 本系列文章…

图形处理单元(GPU)在现代计算中的应用与挑战(研究论文框架)

摘要:随着高性能计算需求的日益增长,图形处理单元(GPU)已从专业的图形渲染处理器转变为具有高性能并行处理能力的多功能计算平台。本文将探讨GPU的核心优势、编程模型、在不同领域的应用以及面临的挑战和限制。此外,还将讨论GPU技术的未来发展趋势和潜在的研究机会。 关键…

Debian/Ubuntu Linux安装OBS

先决条件 建议使用 xserver-xorg 1.18.4 或更新版本&#xff0c;以避免 OBS 中某些功能&#xff08;例如全屏投影仪&#xff09;出现潜在的性能问题。在 Linux 上使用 OBS Studio 需要 OpenGL 3.3&#xff08;或更高版本&#xff09;支持。在终端中输入以下内容来检查系统支持…

办公效率新高度:利用办公软件实现文件夹编号批量复制与移动,轻松管理文件

在数字化时代&#xff0c;我们的工作和生活都围绕着海量的数据和文件展开。然而&#xff0c;随着数据量的不断增加&#xff0c;如何高效地管理这些数字资产成为了摆在我们面前的一大难题。今天&#xff0c;我要向您介绍一种革命性的方法——利用办公软件实现文件夹编号批量复制…

揭开统计分析的秘密:独立样本和配对样本T检验实战案例

一、独立样本T检验 1.收集20名学生的自信心值 见下表&#xff0c;试问该指标是否与性别有关&#xff1f;&#xff08;非参数检验或参数检验&#xff09; 数据值 性别 1&#xff0c;1&#xff0c;1&#xff0c;1&#xff0c;2&#xff0c;2&#xff0c;1&#xff0c;1&#…

UE5蓝图快速实现打开网页与加群

蓝图节点&#xff1a;启动URL 直接将对应的网址输入&#xff0c;并使用即可快速打开对应的网页&#xff0c;qq、discord等群聊的加入也可以直接通过该节点来完成。 使用后会直接打开浏览器。

装载问题(回溯法)

#include<iostream> using namespace std; int n;//货物的数量 int c;//轮船的总的载重量 int cw;//轮船当前的载重量 int r;//货物的总重量 int w[1000];//n个货物各自的重量 int x[1000];//当前最优解 int bestx[1000];//最优解 int bestw;//货物的最优载重量 void Bac…