[数据结构]:04-循环队列(数组)(C语言实现)
目录
前言
已完成内容
循环队列实现
01-开发环境
02-文件布局
03-代码
01-主函数
02-头文件
03-QueueCommon.cpp
04-QueueFunction.cpp
结语
前言
此专栏包含408考研数据结构全部内容,除其中使用到C++引用外,全为C语言代码。使用C++引用主要是为了简化指针的使用,避免二重指针的出现。
已完成内容
[数据结构]:01-顺序表(C语言实现)_Chandni.的博客-CSDN博客
[数据结构]:02-单链表(C语言实现)_Chandni.的博客-CSDN博客
[数据结构]:03-栈(C语言实现)_Chandni.的博客-CSDN博客
循环队列实现
01-开发环境
语言:C/C++14
编译器:MinGW64
集成开发环境:CLion2022.1.3
02-文件布局
请在CLion集成开发环境中创建C++可执行程序,否则无法运行,原因上面已解释。

03-代码
01-主函数
用于测试和初始化队列。
#include "./Head/QueueData.h"
#include "./Source/QueueCommon.cpp"
#include "./Source/QueueFunction.cpp"int main() {ArrayQueue Q;// 初始化InitializationQueue(Q);// 入队QueuePush(Q, 1);QueuePush(Q, 2);QueuePush(Q, 3);QueuePush(Q, 4);QueuePush(Q, 5);QueuePrint(Q);printf("---------------------\n");// 出队ElemType value;QueuePop(Q, value);printf("Queue Pop Value = %d\n", value);QueuePop(Q, value);printf("Queue Pop Value = %d\n", value);QueuePrint(Q);printf("---------------------\n");// 入队QueuePush(Q, 4);QueuePush(Q, 5);QueuePrint(Q);printf("---------------------\n");return 0;
}
02-头文件
用于存储结构体和常量等。
//
// Created by 24955 on 2023-02-26.
//#ifndef INC_01_ARRAYQUEUE_QUEUEDATA_H
#define INC_01_ARRAYQUEUE_QUEUEDATA_H
// 头文件
#include <Stdio.h>// 常量
#define MaxSize 5
typedef int ElemType;// 结构体
typedef struct {ElemType data[MaxSize];int front, rear;
} ArrayQueue;
#endif //INC_01_ARRAYQUEUE_QUEUEDATA_H
03-QueueCommon.cpp
用于存储公共函数以及队列的输出。
//
// Created by 24955 on 2023-02-26.
//
// 初始化队列
void InitializationQueue(ArrayQueue &Queue) {/** 1. 初始化队列*/Queue.front = 0;Queue.rear = 0;
}// 判断队列是否为空
bool JudgeQueueEmpty(ArrayQueue Queue) {/** 1. 头指针和尾指针相等则队列为空* 2. 这里的指针加引号,只是一种标识,这样说方便理解*/if (Queue.front == Queue.rear) {return true;} else {return false;}
}// 判断队列是否已满
bool JudgeQueueFull(ArrayQueue Queue) {/** 1. 尾指针+1取模与头指针相等则满*/if ((Queue.rear + 1) % MaxSize == Queue.front) {return true;} else {return false;}
}// 输出队列元素
void QueuePrint(ArrayQueue Queue) {/** 1. 判断队列是否为空* 2. 若不为空则从头输出*/if (!JudgeQueueEmpty(Queue)) {while (Queue.front != Queue.rear) {printf("%3d", Queue.data[Queue.front]);Queue.front = (Queue.front + 1) % MaxSize;}printf("\n");} else {printf("Queue Empty.\n");}
}
04-QueueFunction.cpp
用于存储入队、出队等函数。
//
// Created by 24955 on 2023-02-26.
//
// 入队
void QueuePush(ArrayQueue &Queue, ElemType value) {/** 1. 判断队列是否已满* 2. 若不满则入队*/if (!JudgeQueueFull(Queue)) {Queue.data[Queue.rear] = value;Queue.rear = (Queue.rear + 1) % MaxSize;} else {printf("Queue Full.\n");}
}// 出队
void QueuePop(ArrayQueue &Queue, ElemType &value) {/** 1. 判断队列是否已空* 2. 若非空则出队*/if (!JudgeQueueEmpty(Queue)) {value = Queue.data[Queue.front];Queue.front = (Queue.front + 1) % MaxSize;} else {printf("Queue Empty.\n");}
}
结语
本章循环队列的实现形式为数组的实现形式,循环队列还可以使用链表形式实现,链表实现形式请关注本专栏下一章。
此博客主要用于408考研数据结构C语言实现记录,内有不足,可留言,可讨论。
相关文章:
[数据结构]:04-循环队列(数组)(C语言实现)
目录 前言 已完成内容 循环队列实现 01-开发环境 02-文件布局 03-代码 01-主函数 02-头文件 03-QueueCommon.cpp 04-QueueFunction.cpp 结语 前言 此专栏包含408考研数据结构全部内容,除其中使用到C引用外,全为C语言代码。使用C引用主要是为了…...
buu [GWCTF 2019]BabyRSA 1
题目描述: import hashlib import sympy from Crypto.Util.number import *flag GWHT{******} secret ******assert(len(flag) 38)half len(flag) / 2flag1 flag[:half] flag2 flag[half:]secret_num getPrime(1024) * bytes_to_long(secret)p sympy.nextp…...
codeforces 1669F
题意: alice和bob从数组两边的吃糖果, 数组的值就是糖果重量 要求alice和bob吃的糖果重量必须一样, 输出能吃几个糖果 这题最先想到的是前后缀相加 模拟一个前缀和 和 后缀和 在n/2的位置向前找前缀和 在n/2的位置向后找后缀和 找到第一个前缀和后缀和的下标输出就好 …...
高数考试必备知识点
三角函数与反三角函数的知识点 正弦函数 ysin x, 反正弦函数 yarcsin x • y sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x (π/2) kπ 为对称轴 • y arcsin x, x∈[–1,1]…...
[蓝桥杯] 二分与前缀和习题练习
文章目录 一、二分查找习题练习 1、1 数的范围 1、1、1 题目描述 1、1、2 题解关键思路与解答 1、2 机器人跳跃问题 1、2、1 题目描述 1、2、2 题解关键思路与解答 1、3 四平方和 1、3、1 题目描述 1、3、2 题解关键思路与解答 二、前缀和习题练习 2、1 前缀和 2、1、1 题目描述…...
SpringMvc中HandlerAdapter组件的作用
概述 我们在使用springMVC时,都知道其中不仅包含handlerMapping组件还包含handlerAdapter组件,为什么呢? springMVC请求流程图 HandlerAdapter组件使用了适配器模式 适配器模式的本质是接口转换和代码复用,这里使用适配器模式的…...
FreeRTOS优先级翻转
优先级翻转优先级翻转:高优先级的任务反而慢执行,低优先级的任务反而优先执行优先级翻转在抢占式内核中是非常常见的,但是在实时操作系统中是不允许出现优先级翻转的,因为优先级翻转会破坏任务的预期顺序,可能会导致未…...
服务器部署—部署springboot之Linux服务器安装jdk和tomcat【建议收藏】
我是用的xshell连接的云服务器,今天想在服务器上面部署一个前后端分离【springbootvue】项目,打开我的云服务器才发现,过期了,然后又买了一个,里面环境啥都没有,正好出一期教程,方便大家也方便自…...
golang项目----家庭收支记账软件
家庭收支记账软件实现基本功能(先使用面向过程,后面改成面向对象)项目代码实现改进面向过程源码面向对象源码utils包中main包中实现基本功能(先使用面向过程,后面改成面向对象) 编写文件TestMyAccount.go完成基本功能 功能一:先完成可以显示…...
中国LNG市场投资机会研究
中国LNG市场投资机会研究中国LNG市场是一个具有巨大潜力和发展机遇的市场,尤其是在政府大力推动清洁能源发展的背景下,LNG市场投资机会正在不断扩大。首先,政府大力支持LNG市场的发展。政府实施的“十三五”规划将LNG作为清洁能源的重要来源&…...
Elasticsearch:索引数据是如何完成的
在我在之前的文章 “Elasticsearch:彻底理解 Elasticsearch 数据操作” 文章中,我详细地描述了如何索引数据到 Elasticsearch 中。在今天的文章中,我想更进一步来描述这个流程。 Elasticsearch 是一个非常强大和灵活的分布式数据系统&#x…...
处理器管理
处理器状态处理器管理是操作系统中重要组成部分,负责管理、调度和分配计算机系统的重要资源——处理器,并控制程序执行由于处理器管理是操作系统最核心的部分,无论是应用程序还是系统程序,最终都要在处理器上执行以实现其功能&…...
跟着我从零开始入门FPGA(一周入门系列)第五
5、同步和异步设计 前面已有铺垫,同步就是与时钟同步。 同步就是走正步,一二一,该迈哪个脚就迈那个脚,跑的快的要等着跑的慢的。 异步就是搞赛跑,各显神通,尽最大力量去跑,谁跑得快,…...
【第42天】Arrays.sort 与 Collections.sort 应用 | 整形数组与集合的排序
本文已收录于专栏🌸《Java入门一百练》🌸学习指引序、专栏前言一.sort函数二、【例题1】1、题目描述2、解题思路3、模板代码4、代码解析二、【例题1】1、题目描述2、解题思路3、模板代码4、代码解析三、推荐专栏序、专栏前言 本专栏开启,目的…...
LeetCode第334场周赛
2023.2.26LeetCode第334场周赛 A. 左右元素和的差值 思路 前缀和后缀和 代码 class Solution { public:vector<int> leftRigthDifference(vector<int>& nums) {int n nums.size();vector<int> l(n), r(n), ans(n);for (int i 1; i < n; i )l[…...
基于深度学习的三维重建网络PatchMatchNet(三):PatchMatchNet配置及代码主要运行流程
目录 1.PatchMatchNet环境配置 2. PatchMatchNet的大致执行流程(eval.py) 2.1 深度图的保存...
【一天一门编程语言】设计一门编程语言,给出基础语法代码示例,SDK设计。
文章目录设计一门编程语言,给出基础语法代码示例,SDK设计。一、编程语言设计1.1 语言名称1.2 数据类型1.3 基本运算符1.4 控制语句二、SDK设计2.1 基础库2.2 第三方库三、例子用 Mango 这门语言实现斐波那契数列。基础语法代码示例SDK 设计使用 Mango 语…...
ubuntu 下 python 安装 venv
ubuntu 下 python 安装 venv1.首先,确保您的系统已安装 Python3 和 pip3,如果没有安装,可以使用以下命令安装:2. 接着,安装 virtualenv 包,使用以下命令:3.创建 Python 虚拟环境,使用…...
HTML#1快速入门
一. 简介HTML是一门语言, 所有的网页都是用HTML编写的HTML(Hyper Text Markup Language): 超文本(超越了文本限制,除了文字信息还可以定义图片,音频,视频等)标记语言(有标签构成的语言)W3C标准: 网页主要由三部分组成(1) 结构: HTML(2) 表现: CSS(3) 行为: JavaScript二. 快速入…...
【MySQL】事务隔离级别是怎么实现的?
事务隔离级别是怎么实现的? 四种隔离级别具体的实现方式 对于「读未提交」:直接读取最新的数据就好。对于「串行化」:通过加读写锁的方式来避免并行访问。对于「读提交」和「可重复读」:通过 Read View 来实现,主要区…...
Z-Image-Turbo_Sugar脸部Lora入门指南:从零开始搭建Sugar专属AI人脸生成系统
Z-Image-Turbo_Sugar脸部Lora入门指南:从零开始搭建Sugar专属AI人脸生成系统 想快速生成专属Sugar风格的甜美脸部图片?本教程将手把手教你搭建一个基于Z-Image-Turbo_Sugar脸部Lora的AI人脸生成系统,无需复杂配置,轻松上手。 1. 环…...
Jimeng LoRA代码实例:为LoRA测试台添加生成图自动归档与标签系统
Jimeng LoRA代码实例:为LoRA测试台添加生成图自动归档与标签系统 1. 项目概述 今天给大家分享一个实用的技术方案:如何为Jimeng LoRA测试台添加生成图片的自动归档和标签系统。这个功能特别适合需要频繁测试不同LoRA版本效果的研究人员和开发者。 Jim…...
一键生成黑苹果EFI配置:OpCore Simplify新手完全指南
一键生成黑苹果EFI配置:OpCore Simplify新手完全指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpCore Simplify是一款革命性的黑苹果…...
AI转PSD终极指南:3步实现Illustrator到Photoshop的无缝转换
AI转PSD终极指南:3步实现Illustrator到Photoshop的无缝转换 【免费下载链接】ai-to-psd A script for prepare export of vector objects from Adobe Illustrator to Photoshop 项目地址: https://gitcode.com/gh_mirrors/ai/ai-to-psd 还在为Illustrator中的…...
在线客服系统源码 | 支持PC管理端+H5访客端+实时聊天
这是一个在线客服系统项目,包含三个主要部分:后端API服务器、PC端管理系统和H5端客服系统。以下是各部分的详细介绍: 1. 后端API服务器 主要功能:用户认证:管理员登录验证快捷回复管理:创建、读取、更新、删…...
OpenClaw任务监控:nanobot镜像执行日志分析与可视化方案
OpenClaw任务监控:nanobot镜像执行日志分析与可视化方案 1. 为什么需要任务监控? 上周我让OpenClaw自动处理一批Markdown文档的格式转换,第二天检查时发现有一半文件没处理完。翻遍日志才发现是模型在某个步骤"卡住"了——没有报…...
3大技巧:如何让旧Mac免费升级到最新macOS系统的完整方案
3大技巧:如何让旧Mac免费升级到最新macOS系统的完整方案 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否有一台2012-2015年的旧款Mac,看着朋…...
Agent 帮不了你,不是因为它不够聪明
上一篇我们分析了 CLI vs MCP 的争论本质上是在讨论"管道",而真正缺的是"水龙头"。这篇继续往下挖:就算水龙头开了,你也大概率接不上。Agent 在现实中寸步难行的原因,比大多数人想的更结构化。 一个常见的许诺…...
大脑极简原理:比冯·诺依曼架构还简单的电磁路由网络 ——为什么意识和智能会从“对称判断”里自然涌现
前言:被复杂化的真相——大脑其实简单到爆我们从小被灌输一个观念:大脑是宇宙中最复杂的系统,860亿神经元、百万亿突触、无数神经递质,像一台精密到无法拆解的超级计算机。神经科学论文越写越长,模型越来越复杂&#x…...
JS知识点汇总(十九)--ajax
1. 说说ajax的原理,以及如何实现? AJAX 全称(Async Javascript and XML) 即异步的 JavaScript 和 XML,是一种创建交互式网页应用的网页开发技术,可以在不重新加载整个网页的情况下,与服务器交换数据,并且更…...
