前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据结构(队列及其实现)

数据结构(队列及其实现)

作者头像
用户11289931
发布于 2024-09-24 08:34:10
发布于 2024-09-24 08:34:10
14000
代码可运行
举报
文章被收录于专栏:学习学习
运行总次数:0
代码可运行

概念与结构

概念:只允许在⼀端进⾏插⼊数据操作,在另⼀端进⾏删除数据操作的特殊线性表,

队列具有先进先出FIFO(First In First Out)原则。

⼊队列:进⾏插⼊操作的⼀端称为队尾

出队列:进⾏删除操作的⼀端称为队头

队列底层结构选型 队列也可以数组和链表的结构实现,使⽤链表的结构实现更优⼀些,因为如果使⽤数组的结构,出队列在数组头上出数据,效率会⽐较低。


队列的实现

Queue.h

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>

//定义队列结构
typedef int QDataType;
typedef struct QueueNode
{
	QDataType data;
	struct QueueNode* next;
}QueueNode;

typedef struct Queue
{
	QueueNode* phead;
	QueueNode* ptail;
	int size;//保存队列有效数据个数
}Queue;

void QueueInit(Queue* pq);
// ⼊队列,队尾
void QueuePush(Queue* pq, QDataType x);
// 出队列,队头
void QueuePop(Queue* pq);

//队列判空
bool QueueEmpty(Queue* pq);

//取队头数据
QDataType QueueFront(Queue* pq);
//取队尾数据
QDataType QueueBack(Queue* pq);
//队列有效元素个数
int QueueSize(Queue* pq);

//销毁队列
void QueueDestroy(Queue* pq);

Queue.c

此处代码与头文件中的代码一一对应。

初始化
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void QueueInit(Queue* pq)
{
	assert(pq);
	pq->phead = pq->ptail = NULL;
	pq->size = 0;
}
入队列(尾)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// ⼊队列,队尾
void QueuePush(Queue* pq, QDataType x)
{
	assert(pq);
	//申请新节点
	QueueNode* newnode =(QueueNode*)malloc(sizeof(QueueNode));
	if (newnode == NULL)
	{
		perror("malloc fail!");
		exit(1);
	}
	newnode->data = x;
	newnode->next = NULL;

	//ptail newnode
	if (pq->phead == NULL)
	{//队列为空
		pq->phead = pq->ptail = newnode;
	}
	else
	{
		//队列不为空
		pq->ptail->next = newnode;
		pq->ptail = pq->ptail->next;//newnode
	}
	pq->size++;
}
队列判空
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//队列判空
bool QueueEmpty(Queue* pq)
{
	assert(pq);
	return pq->phead == NULL && pq->ptail == NULL;
}
出队列(队头)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 出队列,队头
void QueuePop(Queue* pq)
{
	assert(pq);
	assert(!QueueEmpty(pq));

	//只有一个结点的情况,避免ptail变成野指针
	if (pq->ptail == pq->phead)
	{
		free(pq->phead);
		pq->phead = pq->ptail = NULL;
	}
	else
	{
		//删除队头元素、
		QueueNode* next = pq->phead->next;
		free(pq->phead);
		pq->phead = next;
	}
	--pq->size;
}
取队头数据
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//取队头数据
QDataType QueueFront(Queue* pq)
{
	assert(pq);
	assert(!QueueEmpty(pq));

	return pq->phead->data;
}
取队尾数据
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//取队尾数据
QDataType QueueBack(Queue* pq)
{
	assert(pq);
	assert(!QueueEmpty(pq));

	return pq->ptail->data;
}
队列有效元素个数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//队列有效元素个数
int QueueSize(Queue* pq)
{
	assert(pq);
	/*int size = 0;
	QueueNode* pcur = pq->phead;
	while (pcur)
	{
		size++ ;
		pcur = pcur->next;
	}
	return size;*/
	return pq->size;
}
销毁队列
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//销毁队列
void QueueDestroy(Queue* pq)
{
	assert(pq);
	assert(!QueueEmpty(pq));

	QueueNode* pcur = pq->phead;
	while (pcur)
	{
		QueueNode* next = pcur->next;
		free(pcur);
		pcur = next;
	}
	pq->phead = pq->ptail = NULL;
	pq->size = 0;
}

以上便是本期队列的全部内容,感谢大家的观看与支持,这是激励我前进的不竭动力!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
企业云迁移全攻略:成功迁移的几大关键步骤及注意事项
在当今这个数据驱动的时代,企业比以往任何时候都能访问更多的数据。这些数据不仅数量庞大,而且变化速度惊人。无论是采用传统的数据分析方法还是利用机器学习和人工智能等前沿技术,将来自各个来源的信息集中到云存储库中对于业务来说至关重要。
ICT系统集成阿祥
2025/01/10
1530
企业云迁移全攻略:成功迁移的几大关键步骤及注意事项
进行大规模云迁移的挑战和建议
云迁移的过程非常复杂,需要适当的计划和执行。可以肯定的是,很多企业在迁移过程中将面临意想不到的挑战。为了缓解一些挑战,企业可以通过云计算提供商的合作伙伴生态系统或云计算提供商提供的专业服务寻求帮助。
静一
2020/12/02
6260
关于云迁移,企业需要了解的事
当企业计划将业务迁移到云平台时,需要了解云计算迁移的模式列表,了解其可以做什么以及应该避免什么,这将有助于企业做出明智的决定。
静一
2020/05/19
5360
关于云迁移,企业需要了解的事
如何优化云计算投资
关注组织的目标可以确保支出、连接性和安全性保持在可控制的范围内,并与组织的IT愿景保持一致。成本优化的云平台将利用所有资源并以更低成本实现目标,从而使组织能够专注于其他IT优先事项。
静一
2020/06/17
9070
成功进行云计算迁移的八个步骤
在调查中,90%的企业表示难以迁移到云中,复杂性是最常被引用的问题,可以肯定的是,转移物理系统是很多问题的根源。它们通常是传统IT战略的最后一个遗留问题,因为它们支撑着业务运营。 根据调查,英国企业的云采用率现在已接近90%,并且不久之后,所有组织都将在一定程度上从云计算的灵活性、效率和成本节约中受益。经过第一次采用的浪潮,人们看到企业增加了他们迁移到云中的工作负载和应用程序的复杂性。 也许这也是90%的公司在云迁移项目中遇到困难的原因。这对IT团队在部署云解决方案时感到沮丧,因为按理说,
静一
2018/06/08
1.8K0
实施云迁移之前如何计算成本
计算云迁移成本的第一步是在企业将工作负载迁移到云平台之前开始。数据中心管理人员需要评估现有硬件和软件资产的成本,然后评估其与云平台环境的比较方式。在估计了内部部署环境的成本之后,企业可以计算计划构建的云计算环境的成本,并将两者进行比较。计算云计算成本的最佳方法是使用为这一目的而设计的计算器工具。所有主要的云供应商都有自己的计算器。
静一
2021/06/01
9880
将Oracle企业应用程序迁移到云端需要了解的信息
云计算、公共云、多云……人们几乎每天都能听到有关云计算的新闻。事实上,它已成为企业获得敏锐信息技术的推动力。作为Oracle应用程序用户,云计算是企业战略的一部分吗?企业是否考虑将其电子商务套件、Pe
静一
2019/07/05
7530
将Oracle企业应用程序迁移到云端需要了解的信息
云容量管理和应用
几十年来,容量管理一直用于优化组织内部资源。现在,随着IT逐步转向云环境,这种方法正在被扩展,以便在同一个地方和同一时间实现所有资源(包括云计算和本地部署)的整体规划、管理和优化。
静一
2019/03/07
3.2K0
云容量管理和应用
有效的云迁移策略为企业带来的六大好处
实现内部部署设施到多云之间的数据迁移将加快创新速度,将业务人员从运营工作中解放出来,并在混合云和多云部署环境之间构建一座桥梁。
静一
2022/04/02
5510
为什么云中有那么多企业遭遇安全漏洞?
现在企业的网络安全现状不乐观,如果企业对此无动于衷,他们将有一半的机会成为下一个被攻击的目标。如果企业的云计算资产配置不正确、不进行持续监控和更新,那么业务可能会受到攻击。本文介绍了企业确保云资产安全的五个提示。
静一
2022/09/02
3040
企业在云迁移之后面临的5大挑战
如今,企业将业务迁移到云平台的好处已得到充分证明:提高了效率、可扩展性、业务敏捷性,简化管理,并降低总体成本。将业务迁移到云平台中可以推动企业的数字化转型,并使他们能够更快地适应新技术,这项功能对于当今快速发展的业务格局至关重要。
CloudBest
2019/12/06
1K0
企业在云迁移之后面临的5大挑战
企业将如何迁移到云平台?
考虑到新冠病毒疫情导致资金紧缩,云迁移正越来越多地受到企业财务主管的推动,他们希望从资本支出转向运营支出。
静一
2020/11/19
1.6K0
如何正确进行云迁移
对于许多企业来说,如何更好地将关键业务数据和元数据迁移到云端以支持持续的运营和分析仍然是一个难题。要充分利用现代数据堆栈,需要清楚地了解迁移到云端的用例以及成功所需的数据。
静一
2022/12/08
8250
云迁移可能失败的5种方式以及成功的5种方式
对于大多数企业而言,将业务迁移到云平台不再是一个难题。通过将应用程序迁移到云平台中,企业可以提高安全性、数据访问、可扩展性和IT灵活性。将业务迁移到云平台还可以为企业节省成本。
静一
2019/11/22
8940
混合云:如何在公有云和私有云的结合中保持平衡
在混合云世界中,人们将会发现公共云和私有云混合部署的优势:企业需要对某些数据和应用程序进行内部控制,以及为其他业务提供公共云的可扩展性。IT人员需要花费时间查看业务的整体解决方案,并遵循最佳实践帮助企业充分利用这一环境,同时在预算、安全、合规性和优化方面取得更大进展。
静一
2019/08/09
2.1K0
为什么会发生云迁移故障以及如何预防
企业如今向云平台迁移的应用程序比以往任何时候都要多,但其中的许多计划都失败了。企业应该学习如何避免在云迁移方面犯错。
静一
2020/02/26
7830
为什么多云战略对于企业数据保护至关重要
RightScale公司还进行了一项调查,结果发现企业正在考虑并逐步增加对多个公共云平台的使用,而不是只与一家云计算提供商合作。ESG公司2017年开展的调查报告证实了这些发现,81%的组织报告了多云战略和实施计划。
静一
2018/12/19
3730
为什么多云战略对于企业数据保护至关重要
成功进行云迁移的方法
已经开始进行云计算之旅的组织已经展现出对于应对疫情的更大弹性和响应能力。预计在不久的将来,随着不同的云服务模型(SaaS、PaaS、IaaS)以及混合云和多云拓扑的结合,预计各行业组织的云计算采用率将显著提高。
静一
2021/02/05
1.2K0
成功进行云迁移的方法
有效实现多云成本管理的8个步骤
众所周知,企业采用多云可以节省成本,并提高生产力。但是多云基础设施很复杂,具有多家云计算供应商提供的不同服务和条款。企业在采用多个云平台时,很容易在自己没有意识到的情况下造成资金的浪费。
静一
2018/12/18
6480
有效实现多云成本管理的8个步骤
迁移到云端的企业为数字化转型做好准备了吗?
如今,很多企业的首席信息官都在考虑数字化转型,一些技术决策者正寻求将业务迁移到云端,其原因有很多,例如,认为大型机过时的观念、降低成本,以及提高生产力。
静一
2019/05/08
6220
迁移到云端的企业为数字化转型做好准备了吗?
推荐阅读
相关推荐
企业云迁移全攻略:成功迁移的几大关键步骤及注意事项
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档