C语言循环队列
以下是一个使用 C 语言实现的简单循环队列示例:
#include <stdio.h>
#include <stdlib.h>#define MAX_SIZE 5// 定义循环队列结构体
typedef struct {int items[MAX_SIZE];int front, rear;
} Queue;// 初始化队列
void initQueue(Queue *q) {q->front = -1;q->rear = -1;
}// 检查队列是否为空
int isEmpty(Queue *q) {return (q->front == -1 && q->rear == -1);
}// 检查队列是否已满
int isFull(Queue *q) {return ((q->rear + 1) % MAX_SIZE == q->front);
}// 入队
void enqueue(Queue *q, int value) {if (isFull(q)) {printf("Queue is full. Cannot enqueue.\n");return;}if (isEmpty(q)) {q->front = 0;q->rear = 0;} else {q->rear = (q->rear + 1) % MAX_SIZE;}q->items[q->rear] = value;
}// 出队
int dequeue(Queue *q) {int removedItem;if (isEmpty(q)) {printf("Queue is empty. Cannot dequeue.\n");return -1;} else if (q->front == q->rear) {removedItem = q->items[q->front];q->front = -1;q->rear = -1;} else {removedItem = q->items[q->front];q->front = (q->front + 1) % MAX_SIZE;}return removedItem;
}// 获取队首元素
int peek(Queue *q) {if (isEmpty(q)) {printf("Queue is empty.\n");return -1;}return q->items[q->front];
}// 打印队列中的元素
void display(Queue *q) {if (isEmpty(q)) {printf("Queue is empty.\n");return;}int i = q->front;printf("Queue elements: ");do {printf("%d ", q->items[i]);i = (i + 1) % MAX_SIZE;} while (i != (q->rear + 1) % MAX_SIZE);printf("\n");
}int main() {Queue q;initQueue(&q);enqueue(&q, 1);enqueue(&q, 2);enqueue(&q, 3);enqueue(&q, 4);enqueue(&q, 5); // 队列已满display(&q);dequeue(&q);dequeue(&q);display(&q);enqueue(&q, 6);display(&q);printf("Front element: %d\n", peek(&q));return 0;
}
这个示例包含了循环队列的基本操作,包括初始化队列、判断队列是否为空或已满、入队、出队、获取队首元素以及打印队列中的元素。
插入新数据 删除旧数据
#include <stdio.h>#define MAX_SIZE 5// 定义队列结构
struct Queue {int items[MAX_SIZE];int front;int rear;
};// 初始化队列
void initQueue(struct Queue *q) {q->front = -1;q->rear = -1;
}// 检查队列是否已满
int isFull(struct Queue *q) {if ((q->front == 0 && q->rear == MAX_SIZE - 1) || (q->rear == (q->front - 1) % (MAX_SIZE - 1))) {return 1;}return 0;
}// 检查队列是否为空
int isEmpty(struct Queue *q) {if (q->front == -1) {return 1;}return 0;
}// 入队操作
void enqueue(struct Queue *q, int value) {if (isFull(q)) {printf("Queue is full\n");} else {if (q->front == -1) {q->front = 0;}q->rear = (q->rear + 1) % MAX_SIZE;q->items[q->rear] = value;}
}// 出队操作
int dequeue(struct Queue *q) {int item;if (isEmpty(q)) {printf("Queue is empty\n");return -1;} else {item = q->items[q->front];if (q->front == q->rear) {q->front = -1;q->rear = -1;} else {q->front = (q->front + 1) % MAX_SIZE;}return item;}
}// 打印队列中的元素
void printQueue(struct Queue *q) {int i;if (isEmpty(q)) {printf("Queue is empty\n");} else {printf("Queue contains: ");for (i = q->front; i != q->rear; i = (i + 1) % MAX_SIZE) {printf("%d ", q->items[i]);}printf("%d\n", q->items[i]);}
}int main() {struct Queue q;initQueue(&q);// 初始化队列enqueue(&q, 10);enqueue(&q, 20);enqueue(&q, 30);enqueue(&q, 40);enqueue(&q, 50);// 打印初始队列printf("Initial queue: ");printQueue(&q);// 移动队列元素并添加新元素dequeue(&q);enqueue(&q, 60);// 打印修改后的队列printf("Modified queue: ");printQueue(&q);return 0;
}相关文章:
C语言循环队列
以下是一个使用 C 语言实现的简单循环队列示例: #include <stdio.h> #include <stdlib.h>#define MAX_SIZE 5// 定义循环队列结构体 typedef struct {int items[MAX_SIZE];int front, rear; } Queue;// 初始化队列 void initQueue(Queue *q) {q->fr…...
Docker运行出现iptables: No chain/target/match by that name报错如何解决?
在尝试重启 Docker 容器时遇到的错误信息表明有关 iptables 的配置出了问题。这通常是因为 Docker 需要配置网络,而 iptables 规则没有正确设置或被意外删除。具体到你的错误信息中,报错 iptables: No chain/target/match by that name 表示 Docker 尝试…...
力扣 122. 买卖股票的最佳时机 II python AC
动态规划 class Solution:def maxProfit(self, prices):pre float(inf)ans 0for now in prices:if now > pre:ans now - prepre nowreturn ans定义一个变量保存上一步位置最小的数值,来模拟dp --遍历股票数值 --如果当前数值大于上一次,将股票卖…...
F5 BIG-IP Next Central Manager SQL注入漏洞(CVE-2024-26026、CVE-2024-21793)
0x01 产品简介 BIG-IP Next Central Manager是BIG-IP Next的原生默认用户界面,它可跨平台管理BIG-IP Next实例。BIG-IP Next是F5 Networks公司推出的一款下一代BIG-IP软件,提供了多云应用安全和应用交付服务。 0x02 漏洞概述 CVE-2024-26026:BIG-IP Next Central Manager…...
Python3 笔记:循环结构 for语句
for语句是Python语言中构造循环结构程序的语句之一。 Python中for语句是通过循环遍历某一序列对象(字符串、列表、元组或字典)来构建循环,循环结束的条件就是对象被遍历完。 for循环基本语法格式: for 循环变量 in 遍历对象: …...
信息化与数字化的区别在哪里?
信息化与数字化虽然密切相关,但它们在核心理念、实施范围、目标定位、以及对企业的影响上存在本质区别: 1.中心与目标不同: • 信息化通常以流程为中心,致力于提高工作效率,通过信息技术优化和自动化企业内部的流程。…...
记录MySQL数据库查询不等于xxx时的坑
目录 一、背景 二、需求 三、方法 四、示例 一、背景 在使用MySQL数据库查询数据时,需要查询字段name不等于xxx的记录,通过where name ! xxx查询出来的记录不符合预期,通过检查发现少了name字段为null的记录,后经查询得知在My…...
QT的创建,发现编译器有一个黄色三角形感叹号,提示说Cmake配置错误,该怎么办?
确保你安装了Cmake 2.如果你电脑之前已经装了Cmake,那么在qt安装中,即便你选择了Cmake版本,但依旧不会修改电脑的Cmake版本。这时候就会出现黄色箭头。在勾勾的地方会有一个黄色感叹符号(我已经解决了,所以没有显示&a…...
0506libMaven项目
0506libMaven项目包-CSDN博客 数据库字段 界面需求...
HTML飘落的花瓣
目录 写在前面 HTML简介 完整代码 代码分析 系列推荐 写在最后 写在前面 本期小编给大家推荐HTML实现的飘落的花瓣,无需安装软件,直接下载即可打开~ HTML简介 HTML(Hypertext Markup Languageÿ…...
一个小调整,竟然让交换机、路由器的CPU占用率降低了50%
号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 下午好,我的网工朋友。 在信息时代下,不仅仅在网络工程领域,高CPU占用率都是一个非常常见的问题,…...
echarts树图 改文本显示的地方的样式
树图改文本显示的时候的样式 虽然有点越改越丑 其中有一些失败的尝试 forammter 无法识别html元素 所以对于tooptips有用的html元素定义获取返回在这里写的话是不生效的 rich配置项里面的backgroundColor官方说支持 html元素和canvas元素 已经图片url 没有详细试验 官网地址 h…...
MYDB运行环境的搭建
前言 再将该项目跑起来之前,我想你的环境应该是准备的差不多啦!只需要稍稍的配置一下即可。 我在本地已经跑通了,说是兼容JDK8,但我本地刚好有11就用了11啦,跑起来的方法在仓库的 readme 里写的很清楚。 在运行mvn c…...
Flink Stream API实践
目录 Flink程序的基本构成 获得执行环境(environment) 加载/初始化数据(source) 基于文件 基于socket 基于集合 自定义 转换操作(transformation) 基本转换 物理分区 任务链和资源组 名称和描述…...
AI图像生成-原理
一、图像生成流程总结 【AI绘画】深入理解Stable Diffusion!站内首个深入教程,30分钟从原理到模型训练 买不到的课程_哔哩哔哩_bilibili 二、如果只是用comfy UI生成图片 1、找到下面几个文件,把对应模型移动到对应文件夹即可使用 2、选择对…...
【JavaScript】尺寸和位置
DOM对象相关的尺寸和位置属性 用于获取和修改元素在页面中的尺寸和位置。 只读属性: clientWidth和clientHeight:获取元素可视区域的宽度和高度(padding content),不包括边框和滚动条。 offsetWidth和offsetHeight…...
Express框架下搭建GraphQL API
需要先下载apollo-server-express,apollo-server-express是Express框架下,用于构建GraphQL服务的中间件,属于Apollo Server的一部分: npm install apollo-server-express 随后在index.js添加 apollo-server-express包࿱…...
发布订阅模式
一、常见的发布订阅模式 1、Dom的事件 Event addEventListener dispatchEvent //订阅中心 const event new Event(zyk); //订阅 document.addEventListener(zyk, (value)>{console.log(我收到了:, value) }); //发布 document.dispatchEvent(e, 1); docume…...
【Java 演示灵活导出数据】
演示灵活导出数据 🎉🎉🎉🎉🎉🎉【小吴小吴bug全无开通公众号】关注公众号获取第一时间博客动态 背景今天临时起兴打开稀土掘金导航栏看到页面推广gitee项目恰巧最近也在学习python了解到python爬虫很厉害&…...
一对一WebRTC视频通话系列(六)——部署到公网
本系列博客主要记录一对一WebRTC视频通话实现过程中的一些重点,代码全部进行了注释,便于理解WebRTC整体实现。 本专栏知识点是通过<零声教育>的音视频流媒体高级开发课程进行系统学习,梳理总结后写下文章,对音视频相关内容感…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
