队列

队列(Queue):具有一定操作约束的线性表

插入和删除操作:只能在一端插入,而在另一端删除

队列的顺序存储实现

1. 定义
> 队列的顺序存储结构通常由一个一维数组和一个记录队列头元素位置的变量front以及一个记录队列尾元素位置的变量rear组成
#define MaxSize <存储数据元素的最大个数>
struct QNode {
	ElementType Data[MaxSize];
	int rear;
	int front;
};
typedef struct QNode* Queue;
2. 循环队列入队
void AddQ(Queue PtrQ, ElementType item) {
	if ((PtrQ->rear + 1) % MaxSize == PtrQ->front) {
		printf("队列满");
		return;
	}
	PtrQ->rear = (PtrQ->rear + 1) % MaxSize;
	PtrQ->Data[PtrQ->rear] = item;
}
3. 循环队列出队
ElementType DeleteQ(Queue PtrQ) {
	if (PtrQ->front == PtrQ->rear) {
		printf("队列空");
		return ERROR;
	}
	else {
		PtrQ->front = (PtrQ->front + 1) % MaxSize;
		return PtrQ->Data[PtrQ->front];
	}
}

队列的链式存储实现

1. 定义
struct Node {
	ElementType Data;
	struct Node* Next;
};
struct QNode {
	struct Node* rear; //指向队尾节点
	struct Node* front; //指向队头节点
};
typedef struct QNode* Queue;
2. 不带头结点的链式队列出队
ElementType DeleteQ(Queue PtrQ) {
	struct Node* FrontCell;
	ElementType FrontElem;

	if (PtrQ->front == NULL) {
		printf("队列空");
		return ERROR;
	}

	FrontCell = PtrQ->front;
	if (PtrQ->front == PtrQ->rear)
		PtrQ->front = NULL;
	else
		PtrQ->front = FrontCell->Next;
	FrontElem = FrontCell->Data;
	free(FrontCell);
	return FrontElem;
}

热门文章

暂无图片
编程学习 ·

XTransfer外贸收款账户是如何收费的?

XTransfer外贸收款账户是如何收费的?很多朋友很关心这个问题。XTransfer账户的注册和认证是免费的,也没有年费和管理费。但是每家合作的银行政策不同,对于入账有的收费,有的免费,下面就给大家罗列一下具体的项目是如何收费的。如果您还没有注册XTransfer账号,请点击【XTr…
暂无图片
编程学习 ·

LeetCode_Everyday:021 Merge Two Sorted Lists

LeetCode_Everyday:021 Merge Two Sorted Lists题目:示例:代码参考此外 LeetCode Everyday:坚持价值投资,做时间的朋友!!! 题目: 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:示例 1:输入:1->2->4, 1-…
暂无图片
编程学习 ·

挂牌一年,关于 5G 的 9 个变化

简介:2019 年 6 月 6 日的一张新闻图片瞬间刷遍全网,意味着中国正式进入 5G 时代,2019 年也被业界称为 5G 商用元年。转眼间一年过去,这个不断被提及的 5G 新星发展到了什么程度呢,让我们再来回顾和展望一下。3GPP 标准进展移动通讯网络作为全球的基础设施,标准化是基础,…
暂无图片
编程学习 ·

IM即时通讯哇呼--解析

哇呼“Chat”是一款包含android客户端/ios客户端/pc客户端/WEB客户端的即时通讯系统。是由闪电云自主研发,服务器端源码直接部署在客户主机。非任何第三方IM通讯平台! 为各行业门户网站和企事业单位提供“一站式”定制解决方案,打造一个稳定,安全,高效,可扩展的即时通信系…
暂无图片
编程学习 ·

Flink原理与实现:Flink中的状态管理,keygroup,namespace

namespace维护每个subtask的状态上面Flink原理与实现的文章中,有引用word count的例子,但是都没有包含状态管理。也就是说,如果一个task在处理过程中挂掉了,那么它在内存中的状态都会丢失,所有的数据都需要重新计算。从容错和消息处理的语义上(at least once, exactly onc…
暂无图片
编程学习 ·

你(真的)编写异常安全代码吗? [关闭]

本文翻译自:Do you (really) write exception safe code? [closed] Exception handling (EH) seems to be the current standard, and by searching the web, I can not find any novel ideas or methods that try to improve or replace it (well, some variations exist, b…
暂无图片
编程学习 ·

代码优化

也许有人会感觉CR没有什么卵用,只要我代码实现了功能,我完成了开发任务,我就OK了,为啥还要CR??但是CR真的是有必要的,你不仅可以发现自己代码中的不足之处,待优化点,简洁明了的代码易读别人接手也会很快。1. 比如在vue项目中只有某一个组件用某一个特别长的常量对象,…
暂无图片
编程学习 ·

手动连接线上presto

命令如下: java -jar presto-cli-0.237-executable.jar --server https://presto.ludp.lenovo.com:30070 --catalog hive --truststore-path /opt/jdk1.8.0_25/jre/lib/security/keystore.jks --truststore-password changeit在之前可以先测试一下网络 ping presto.ludp.lenov…
暂无图片
编程学习 ·

加速推进新基建,中国联通软件研究院助力广东智造云升级为全国工业平台

加速推进新基建,中国联通软件研究院助力广东智造云升级为全国工业平台发稿时间:2020-07-01 11:260【字体: 大 中 小】6月23日,中国联通智造云全国级工业市场顺利完成上线,6月28日,智造云产品成功在湖北省签约下单,打破了省内地域的限制,实现了省分政企创新业务迈向全国…
暂无图片
编程学习 ·

软件构造复习2

这里写目录标题软件生命周期和配置管理设计软件的两个基本模型模型其他模型Agile Development 软件生命周期和配置管理 (软件开发,从0到n,遵循什么过程?) 设计软件的两个基本模型模型 线性过程:从底层/需求开始,下一步是上一步的基础 迭代过程:回头解决不合理之处 其他…
暂无图片
编程学习 ·

css3属性选择器

属性选择器 基本用法选择符 简介E[att] 选择具有att属性的E元素E[att=val] 选择具有att属性且属性值等于val的E元素E[att^=“val”] 匹配具有att属性、且值以val开头的E元素E[att$=“val”] 匹配具有att属性、且值以val结尾的E元素E[att*=“val”] 匹配具有att属性、且值中含有…
暂无图片
编程学习 ·

String常用API

这里写目录标题什么是JDK API文档注释规范字符串String以及常用的APIString常量池String常用APIStringBuilderStringBuffer 什么是JDK APIJDK中包含大量打API类库,所谓API(Application Programming Interface,应用程序编程接口)就是一些已写好.可供直接调用的功能(在Java语言中…
暂无图片
编程学习 ·

imx6 DDR Stress Test Tool

DDR Stress Test Tool 提供了两种用途。首先,它可以用来对校准DDR3,以便于MMDC PHY delay settings和PCB配对 来达到最佳的DRAM新能。整个过程是全自动的,因此客户可以在较短的时间内让他们的DDR3工作起来。另外,该工具可以运行内存压力测试,用来验证DDR3的功能和可靠性。…
暂无图片
编程学习 ·

Java 为什么Set元素是不重复的?是如何去重复的?

为什么Set元素是不重复的?是如何去重复的?对于有值特性的,Set集合可以直接判断进行去重复。例如数字1,2,本身就有值特性。 对于引用数据类型的类对象: set集合会让两两对象,先调用自己的hashCode()方法得到彼此的哈希值(所谓的内存地址) 然后比较两个对象的哈希值是否相…
暂无图片
编程学习 ·

Transformer

Transformer是谷歌大脑在2017年底发表的论文attention is all you need中所提出的seq2seq模型。现在已经取得了大范围的应用和扩展,而BERT就是从Transformer中衍生出来的预训练语言模型 这篇文章分为以下几个部分Transformer直观认识 Positional Encoding Self Attention Mech…
暂无图片
编程学习 ·

学术论文写作漫谈

超星尔雅学术论文写作漫谈章节测验答案1.1 高校学生学术论文写作现状1【单选题】根据调研结果显示,目前高校大一学生在论文写作方面的主要困难不包括()。 答案:不知写多少字A、不知如何选题B、不知如何查资料C、不知写多少字D、不知学术规范标准2【单选题】根据调研,学生认为写…
暂无图片
编程学习 ·

浅谈人工智能学习入门

这里写目录标题AI学习战略1、数学基础学习课程2、代码基础学习课程3、机器学习基础学习课程4、深度学习基础学习课程5、强化学习基础6、应用方向 AI学习战略 人工智能的学习,从横向来分,可简单分为工程能力与研究能力,但是学习路线来看,需要纵向来分,可分为如下步骤,需要…