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版是开源免费的。然…

可控硅失效现象_可控硅坏的原因有哪些

可控硅坏的原因有哪些1、电压击穿可控硅因不能承受电压而损坏,其芯片中有一个光洁的小孔,有时需用扩大镜才能看见。其原因可能是管子本身耐压下降或被电路断开时产生的高电压击穿。2、电流损坏电流损坏的痕迹特征是芯片被烧成一个凹坑,且粗糙…

c语言程序停止正常工作,C语言 由于出现问题,程序停止正常工作。如果帮我解决这个问题即可获得悬赏...

#include#include#include/*****航班信息的结构体构建 *****/struct HBXX{char HBH[20]; /****航班号*****/char JX[20]; /****机型*******/char CFD[20]; /****出发地*****/char MDD[20]; /****目的地*****/int ZWS; /****…

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

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

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

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

Vite + React 组件开发实践

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

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

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

列举python的五个数据类型_python笔记--数据类型--列表

本文为我学习python的笔记,因本人的编程技术才刚刚入门,所以笔记中可能会有一些错误,希望大家能友好的帮我指正出来本文文字内容均为原创,请勿私自转载图片来自互联网,侵删列表(list)定义,用[]来定义eg:lis…

开发者看过来,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语言为变量提供了⑤种不同的存储模型,或者说是存储类。①个变量可以用存储时期描述,也可以用作用域描述,也…

vue表单中批量导入功能_spring boot mybatis+ vue 使用POI实现从Excel中批量导入数据

一、前端vueelement1.前端使用element的upload组件来实现文件的上传style"display: inline-flex;margin-right: 8px":show-file-list"false" :before-upload"beforeUpload":on-success"onSuccess":on-error"onError"accept&…

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

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

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

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