循环队列c语言版

一、循环队列结构体

typedef int  QueueDataType; 
#define CQ_MAX_SIZE  10typedef struct CircularQueue
{QueueDataType data[CQ_MAX_SIZE];/**标记队列首*/QueueDataType head;/**标记队列尾部*/QueueDataType rear;} CircularQueue;

二、循环队列操作函数声明


/**创建队列*/
CircularQueue* create_circular_queue();/**队列是否已满*/
bool  isFull(CircularQueue* queue);/**队列是否为空*/
bool  isEmpty(CircularQueue* queue);/**入队列*/
bool  enqueue(CircularQueue* queue,QueueDataType el);/**出队列*/
QueueDataType dequeue(CircularQueue* queue);/**输出队列*/
void show_queue(CircularQueue* queue);/**销毁队列*/
void   destory_queue(CircularQueue* queue);

三、循环队列操作函数定义

/**创建队列*/
CircularQueue* create_circular_queue()
{CircularQueue* queue = (CircularQueue*) malloc(sizeof(CircularQueue));if(queue ==  NULL){perror("CircularQueue分配内存空间失败");return NULL;}queue->head  = 0;queue->rear  = 0;return queue;
}/**队列是否为空*/
bool  isEmpty(CircularQueue* queue)
{return queue->head == queue->rear;
}/**队列是否已满*/
bool  isFull(CircularQueue* queue)
{//  rear是冗余出来的一个空间,置于队尾,用于记当前队中元素的个数return  (queue->rear + 1)%CQ_MAX_SIZE == queue->head;
}/**入队列*/
bool  enqueue(CircularQueue* queue,QueueDataType el)
{if(isFull(queue)){perror("队列已满");return  false;}queue->data[queue->rear%CQ_MAX_SIZE]  = el ;queue->rear++;return true;
}/**出队列*/
QueueDataType dequeue(CircularQueue* queue)
{if(isEmpty(queue)){perror("对列中暂无元素");return -1;}QueueDataType el = queue->data[queue->head%CQ_MAX_SIZE];queue->head++;return el;
}/**输出队列*/
void show_queue(CircularQueue* queue)
{if(isEmpty(queue)){perror("对列中暂无元素");return ;}int i =  queue->head;while ( i < queue->rear){QueueDataType el = queue->data[i%CQ_MAX_SIZE];printf("el=%d\n",el); i++;}
}void   destory_queue(CircularQueue* queue)
{free(queue);
}

四、测试队列

void  test_cricular_queue()
{CircularQueue *quque = create_circular_queue();QueueDataType arr[] =  {11,21,31,41,51,61,71,81,91,101};int  i = 0;for(;i<10;i++){enqueue(quque,arr[i]);}show_queue(quque);QueueDataType  el = dequeue(quque);printf("取出队列元素el=%d\n",el);destory_queue(quque);
}

运行结果:

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

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

相关文章

软件工程——期末复习知识点汇总

本帖的资料来源于某国内顶流高校的期末考试资料&#xff0c;仅包含核心的简答题&#xff0c;大家结合个人情况&#xff0c;按需复习~ 总的来说&#xff0c;大层面重点包括如下几个方面&#xff1a; 软件过程需求工程 设计工程软件测试软件项目管理软件过程管理 1.掌握软件生命…

SQL 选择数据库 USE语句

SQL 选择数据库 USE语句 当SQL Schema中有多个数据库时&#xff0c;在开始操作之前&#xff0c;需要选择一个执行所有操作的数据库。 SQL USE语句用于选择SQL架构中的任何现有数据库。 句法 USE语句的基本语法如下所示 : USE DatabaseName;数据库名称在RDBMS中必须是唯一的。…

How to install mongodb-7.0 as systemd service with podman

How to install mongodb-7.0 as systemd service with podman 1、安装1.1、创建卷1.2、配置文件1.3、创建容器1.4、服务管理1.5、容器管理 2、客户端管理 1、安装 1.1、创建卷 配置卷 podman volume create --label typemongo-7.0 --label envdev mongo-7.0-conf数据卷 pod…

Canny算子详解及例程

Canny算子是一种经典的边缘检测算法&#xff0c;于1986年由John Canny提出。相比其他边缘检测算法&#xff0c;Canny算子具有以下特点&#xff1a; 高准确性&#xff1a;Canny算子能够对图像中真实边缘进行准确检测&#xff0c;并尽量排除非边缘部分的干扰。 低错误率&#xf…

Creaform形创HandySCAN MAX l Elite三维扫描仪便携式3D测量解决方案

CASAIM中科院广州电子智能制造事业部连续多年荣获形创Creaform战略级代理商证书。战略级代理商是形创Creaform最高级别的合作伙伴。 2023年CASAIM中科院广州电子智能制造事业部的形创Creaform战略级代理商证书&#xff1a; Creaform 形创是便携式三维测量解决方案和工程服务领…

[Python进阶] 消息框、弹窗:tkinter库

6.16 消息框、弹窗&#xff1a;tkinter 6.16.1 前言 应用程序中的提示信息处理程序是非常重要的部分&#xff0c;用户要知道他输入的资料到底正不正确&#xff0c;或者是应用程序有一些提示信息要告诉用户&#xff0c;都必须通过提示信息处理程序来显示适当的信息&#xff0c…

NPDP产品经理证书是什么行业的证书?

NPDP是一个跨行业的证书&#xff0c;它适用于各种不同类型和规模的组织。无论是制造业、服务业还是科技领域&#xff0c;都可以从NPDP认证中获益。 1. 制造业&#xff1a; 制造业涉及大量的产品开发和创新活动。从汽车制造到电子设备制造&#xff0c;从家居用品到航天航空&…

【vue3】子传父-事件总线-mitt(子组件派发事件,父组件接收事件和传递的参数)

安装库&#xff1a;cnpm install mitt 封装 eventbus.ts&#xff1a; src->utils->eventbus.ts //eventbus.tsimport mitt from mittconst emitter mitt()export default emitter使用 B2.vue&#xff1a; //B2.vue <template><div class"aa">…

idea + Docker-Compose 实现自动化打包部署(仅限测试环境)

一、修改docker.service文件&#xff0c;添加监听端口 vi /usr/lib/systemd/system/docker.service ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock重启docker服务 systemctl daemo…

邦盛科技冲刺上市“冷思考”:身处红线边缘,达摩克利斯之剑高悬

撰稿|行星 来源|贝多财经 近日&#xff0c;浙江邦盛科技股份有限公司&#xff08;下称“邦盛科技”&#xff09;因发行上市申请文件中记载的财务资料已过有效期&#xff0c;需要补充提交。根据相关规定&#xff0c;上海证券交易所中止其发行上市审核。 据介绍&#xff0c;邦…

下载zip源码并使用交叉编译工具进行编译

可以按照以下步骤进行操作&#xff1a; 确保已经设置好交叉编译工具链并将其添加到系统的环境变量中。 打开终端&#xff0c;进入你想要存放源码的目录&#xff1a; cd /path/to/source/directory使用git命令克隆zip库的源码仓库&#xff1a; git clone https://github.com/ni…

量变引起质变:安卓改多了,就是自己的OS

最近小米也发布了自己的OS&#xff0c;其他也有厂家跟进。这是自华为鸿蒙之后&#xff0c;大家都说自己开发OS。对此&#xff0c;也是有很多争论的。 有人说&#xff0c;这些东西不都是安卓套壳或者改名吗&#xff1f;怎么就变成了自己的OS&#xff1f;这种观点对不对呢&#x…

StartCoroutine/yield 返回模式在 Unity 中到底如何工作?

Unity3D协程详解 游戏中的许多过程都是在多个帧的过程中发生的。你有“密集”的过程&#xff0c;比如寻路&#xff0c;每个帧都努力工作&#xff0c;但会分成多个帧&#xff0c;以免对帧速率产生太大影响。您拥有“稀疏”进程&#xff0c;例如游戏触发器&#xff0c;它们在大多…

Shopee、Lazada卖家不得不看的提升销量技巧,自养号测评打造权重

近年来&#xff0c;大部分虾皮、Lazada卖家开始通过测评补单的方式来提升店铺权重和产品排名&#xff0c;以吸引更多流量。这种方式可以有效提高产品的销售转化率&#xff0c;对店铺的运营起到推动作用。然而&#xff0c;测评补单并非简单的购买过程&#xff0c;其中涉及到许多…

干洗店预约下单管理系统收衣开单拍照必备软件

随着生活水平的提高和节奏的加快&#xff0c;商务人士的衣物越来越多&#xff0c;但精力和时间却越来越少。于是&#xff0c;干洗店应运而生&#xff0c;在中国&#xff0c;几乎所有的中心城市干洗店都门庭若市。若每人每月需要干洗一套服装&#xff0c;一个城市每月则需干洗50…

面试中经常问道的问题二

深入理解前端跨域方法和原理 前言 受浏览器同源策略的限制&#xff0c;本域的js不能操作其他域的页面对象&#xff08;比如DOM&#xff09;。但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦。所以我们要通过一些方法使本域的js能够操作其他域的页面对象或者使…

HTML5语义化标签 header 的详解

&#x1f31f;&#x1f31f;&#x1f31f; 专栏详解 &#x1f389; &#x1f389; &#x1f389; 欢迎来到前端开发之旅专栏&#xff01; 不管你是完全小白&#xff0c;还是有一点经验的开发者&#xff0c;在这里你会了解到最简单易懂的语言&#xff0c;与你分享有关前端技术和…

idea使用Alibaba Cloud Toolkit实现自动部署

在日常开发过程中&#xff0c;经常会使用到jenkins进行项目部署&#xff0c;但对一些小项目来说&#xff0c;这就过于复杂&#xff0c;就可以使用Alibaba Cloud Toolkit插件配合shell脚本进行项目的远程部署工作。 一、下载Alibaba Cloud Toolkit插件 二、服务器安装nohup 1.…

Kafka - 消息队列的两种模式

文章目录 消息队列的两种模式点对点模式&#xff08;Point-to-Point&#xff0c;P2P&#xff09;发布/订阅模式&#xff08;Publish/Subscribe&#xff0c;Pub/Sub&#xff09; 小结 消息队列的两种模式 消息队列确实可以根据消息传递的模式分为 点对点模式发布/订阅模式 这两…

Power BI 实现日历图,在一张图中展示天、周、月数据变化规律

《数据可视化》这本书里介绍了一个时间可视化的案例&#xff08;如下图所示&#xff09;&#xff0c;以日历图的形式展示数据的变化&#xff0c;可以在一张图上同时观察到&#xff1a;&#xff08;1&#xff09;每一天的数据变化&#xff1b;&#xff08;2&#xff09;随周变化…