c语言队列作用,队列(C语言)

一、定义

一种可以实现“先进先出”的存储结构。

二、分类

1、链式队列:用链表实现。

2、静态队列:用数组实现。

静态队列通常都必须是循环队列。

3、循环队列

(1)循环队列需要几个参数来确定?

需要2个参数来确定:front、rear

(2)循环队列各个参数的含义

这2个参数在不同场合有不同的含义。

1)队列初始化:front和rear的值都是0。

2)队列非空:front指向队列的第一个元素;rear指向队列的最后一个有效元素的下一个元素。

3)队列空:front和rear的值相等,但不一定是0。

(3)循环队列入队伪算法讲解

a.将值存入r所代表的位置

b.错误的写法:r=r+1

正确的写法:r=(r+1)%数组的长度

c65cfc885ad8

(4)循环队列出队伪算法讲解

f=(f+1)%数组的长度

(5)如何判断循环队列是否为空?

如果front与read的值相等,则该循环队列一定为空。

(6)如何判断循环队列是否已满?

2种方式:

a.多增加一个标识参数,用来表示是满还是空(一般不用此方式)

b.少用一个元素(通常使用此方式):

如果(r+1)%数组长度==f,则表示循环队列已满。

例1:

#include

#include

#include

typedef struct Queue

{

int *pBase; // 数组

int front;

int rear;

} QUEUE;

void init(QUEUE *);

bool en_queue(QUEUE *, int); // 入队:往哪个队列,放什么值

void traverse_queue(QUEUE *); // 遍历

bool full_queue(QUEUE *); // 判断队列是否已满

bool out_queue(QUEUE *, int *); // 出队,并把出队的值保存起来

int main(void)

{

QUEUE Q;

int val = 0;

init(&Q);

en_queue(&Q, 1);

en_queue(&Q, 2);

en_queue(&Q, 3);

en_queue(&Q, 4);

en_queue(&Q, 5);

en_queue(&Q, 6);

en_queue(&Q, 7);

en_queue(&Q, 8);

traverse_queue(&Q);

if(out_queue(&Q, &val))

{

printf("队列出队成功,出队的元素是:%d\n", val);

}

else

{

printf("出队失败!\n");

}

traverse_queue(&Q);

return 0;

}

void init(QUEUE *pQ)

{

pQ->pBase = (int *)malloc(sizeof(int)*6);

pQ->front = 0;

pQ->rear = 0;

}

bool full_queue(QUEUE *pQ)

{

if((pQ->rear+1)%6 == pQ->front)

{

return true;

}

else

{

return false;

}

}

bool en_queue(QUEUE *pQ, int val)

{

if(full_queue(pQ))

{

return false;

}

else

{

pQ->pBase[pQ->rear] = val; // 入队的值要存入rear所在的位置

pQ->rear = (pQ->rear+1)%6;

return true;

}

}

void traverse_queue(QUEUE *pQ)

{

int i = pQ->front;

while(i != pQ->rear)

{

printf("%d ", pQ->pBase[i]);

i = (i+1)%6;

}

printf("\n");

}

bool empty_queue(QUEUE *pQ)

{

if(pQ->front == pQ->rear)

{

return true;

}

else

{

return false;

}

}

bool out_queue(QUEUE *pQ, int *pVal)

{

if(empty_queue(pQ))

{

return false;

}

else

{

*pVal = pQ->pBase[pQ->front];

pQ->front = (pQ->front+1)%6;

return true;

}

}

c65cfc885ad8

循环队列程序

三、具体应用

所有和时间有关的操作都与队列有关。

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

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

相关文章

2021银行共探转型新动能:大行酝酿质变 小行跨越数字鸿沟

2021年,我国“十四五”规划开篇启程,数字经济蓬勃发展,银行业紧跟国家发展大局,全力推进数字化转型向纵深发展,探寻行业新动能,积极参与全社会数字生态建设,为数字中国高质量发展贡献金融力量。…

如何构建一个拖垮整个公司的运维系统

简介: 人肉运维,不在 DevOps 中转型,就在自动化中消亡。云化时代的运维,需要的是高铁,而不是“跑的更快的马车”。6月25日,数智创新行上海站智能运维专场,期待您的参与。 原文链接 本文为阿里云…

idea 安装php插件_免费版的 IDEA 为啥不能使用 Tomcat ?

程序员的成长之路互联网/程序员/技术/资料共享 关注阅读本文大概需要 2 分钟。来自:https://urlify.cn/2Ifiiiidea有两大版本,一个是Ultimate版本,一个是Community版,ultimate是需要收费的,Community版是开源免费的。然…

RocketMQ 千锤百炼--哈啰在分布式消息治理和微服务治理中的实践

简介: 随着公司业务的不断发展,流量也在不断增长。我们发现生产中的一些重大事故,往往是被突发的流量冲跨的,对流量的治理和防护,保障系统高可用就尤为重要。 作者|梁勇 ​ 背景 ​ 哈啰已进化为包括两轮…

休闲食品行业如何数字化升级,腾讯云和卫龙辣条一起打了个样

11月26日,腾讯云与卫龙集团达成战略合作,双方将整合各自优势资源,助力卫龙集团建设专有云平台,围绕生产、运营、管理层面进行全链路数字化,加速卫龙集团转型升级,打造休闲食品行业标杆。 作为一家年销售超过…

Vite + React 组件开发实践

简介: 毫不夸张的说,Vite 给前端带来的绝对是一次革命性的变化。或者也可以说是 Vite 背后整合的 esbuild 、 Browser es modules、HMR、Pre-Bundling 等这些社区中关于 JS 编译发展的先进工具和思路,在 Vite 这样的整合推动下,给…

canvas全局合成画月牙_GIF动态图,视频?都能用Python转换成字符画图像

字符画是一种由字母、标点或其他字符组成的图画,它产生于互联网时代,在聊天软件中使用较多,本文我们看一下如何将自己喜欢的图片转成字符画。静态图片首先,我们来演示将静态图片转为字符画,功能实现主要用到的 Python …

开发者看过来,5 行代码实现身份认证,Authing 如何做到的?

在没有学编程前,可能我们不会想到看起来简单的注册登录功能,其实并不简单,背后可能需要考虑: 1、支持用户用手机验证码、邮箱验证码登录; 2、用户连续登录失败,为了防止暴力破解,需考虑 24 小…

用c语言绘制自定义图形,Android使用自定义View绘图

使用自定义 View 绘图实例 MyViewCanvasDemo 自定义一个名为 MyView 的 View 类,并在其 onDraw() 方法中绘制简单的图像,运行效果如图 1 所示。图 1 简单的 View 绘图实例 MyViewCanvasDemo 没有使用布局文件,而是将自定义的 MyView 对象显示…

如何构建企业出海的“免疫力“?深入解读阿里云CDN安全能力

简介: 随着信息技术快速发展与应用,产业数字化和智能化趋势正日益加深,企业信息安全与防护被提升到前所有未有的高度。阿里云CDN经过10多年的技术发展时间,已逐步构筑一个边缘云的安全网络立体防护体系,包含了全链路安…

使用率激增 250%,这份报告再次将 Serverless 推向幕前

简介: 本文是对 Datadog 最新的一份 Serverless 报告的解读,欢迎大家留言讨论。 每项新技术的产生和演进过程中,都会有他自己的拥趸,也会有持怀疑论者。Serverless 的美在于他可以尽可能的解放客户在基础设施上的投入,…

dev用不了_跟风喊AMD YES?很多生产力项目,你必须用IU

大家好,我是小匠。现在的电脑市场中,高喊AMD YES几乎已经成为了一种政治正确了,尤其是在所谓的“生产力需求”的领域中。各大评测结果中也几乎都是AMD吊打Intel的局面。然而AU真的在所有生产力项目中都吊打IU吗?我可以负责任的告诉…

云计算到底是谁发明的?

作者 | 小枣君来源 | 鲜枣课堂(ID:xzclasscom)大家都在讨论云计算、云原生,那你知道云计算是谁发明的吗?说到云计算的起源,公众普遍认为,谷歌前 CEO 埃里克施密特是云计算概念的第一个提出者。2…

c语言静态变量存在堆还是栈,c 类 static 函数 什么样是静态变量?嵌入式C语言的堆栈管理如何实现...

C语言中静态变量是什么意思,有什么作用,static在数据类型前面表示什么最近刚看了C存储类的章节。所以来说说。C语言为变量提供了⑤种不同的存储模型,或者说是存储类。①个变量可以用存储时期描述,也可以用作用域描述,也…

如何专业化监控一个Kubernetes集群?

简介: 本文会介绍 Kubernetes 可观测性系统的构建,以及基于阿里云云产品实现 Kubernetes 可观测系统构建的最佳实践。 作者:佳旭 阿里云容器服务技术专家 引言 Kubernetes 在生产环境应用的普及度越来越广、复杂度越来越高,随之而…

如何构建一个拖垮整个公司的备份系统

简介: 在如今“数据即资产”的时代,有备才能无患。备份就像备胎,虽然大多人都知道备胎很重要,却很少有人检查。不发生点什么,你永远不知道TA对你有多重要。 原文链接 本文为阿里云原创内容,未经允许不得转…

6.7K Star 的知名开源项目源码,该怎么看?

作者 | 一只图雀来源 | 程序员巴士心理认知要到位首先要认识到,看源码是一个开始比较枯燥、同时时间跨度相对比较长的一个过程。所以看源码的第一步是找到自己想要了解领域、或者自己所在业务领域高度相关的项目,并且在这个领域比较出名,且维…

网站建设中 模板_网站建设之模板网站的缺点

随着网站建设市场的日益成熟,许多的自助建站平台纷纷涌入建站市场,甚至许多主机供应商也与一些自助建站平台达成了战略合作,买服务器赠送模板网站。那么我们进行网站建设时是选择专业建站公司的定制网站还是模板站呢?看完模板网站…

阿里云李飞飞:什么是云原生数据库

简介: 云原生是一种新型技术体系,是云计算未来的发展方向。今天,阿里云李飞飞将和我们分享何为云原生、云原生如何与分布式有机结合,以及云原生技术如何帮助客户迈入数字原生时代。 作者 | 飞刀 来源 | 阿里技术公众号 云原生是一…

stm32 adc 连续和扫描_技术分享 | STM32多个ADC模块同时采样转换的应用示例

在STM32家族里,多数系列芯片内含2到3个ADC模块,有的甚至更多,比方G4系列可以有5个ADC模块。其中,通道数因不同的系列或型号多少不等,几个到几十个的都有。有时,我们可能需要多个ADC模块同时工作&#xff0c…