当前位置: 首页 > news >正文

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 语言实现的简单循环队列示例&#xff1a; #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 需要配置网络&#xff0c;而 iptables 规则没有正确设置或被意外删除。具体到你的错误信息中&#xff0c;报错 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定义一个变量保存上一步位置最小的数值&#xff0c;来模拟dp --遍历股票数值 --如果当前数值大于上一次&#xff0c;将股票卖…...

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语句是通过循环遍历某一序列对象&#xff08;字符串、列表、元组或字典&#xff09;来构建循环&#xff0c;循环结束的条件就是对象被遍历完。 for循环基本语法格式&#xff1a; for 循环变量 in 遍历对象: …...

信息化与数字化的区别在哪里?

信息化与数字化虽然密切相关&#xff0c;但它们在核心理念、实施范围、目标定位、以及对企业的影响上存在本质区别&#xff1a; 1.中心与目标不同&#xff1a; • 信息化通常以流程为中心&#xff0c;致力于提高工作效率&#xff0c;通过信息技术优化和自动化企业内部的流程。…...

记录MySQL数据库查询不等于xxx时的坑

目录 一、背景 二、需求 三、方法 四、示例 一、背景 在使用MySQL数据库查询数据时&#xff0c;需要查询字段name不等于xxx的记录&#xff0c;通过where name ! xxx查询出来的记录不符合预期&#xff0c;通过检查发现少了name字段为null的记录&#xff0c;后经查询得知在My…...

QT的创建,发现编译器有一个黄色三角形感叹号,提示说Cmake配置错误,该怎么办?

确保你安装了Cmake 2.如果你电脑之前已经装了Cmake&#xff0c;那么在qt安装中&#xff0c;即便你选择了Cmake版本&#xff0c;但依旧不会修改电脑的Cmake版本。这时候就会出现黄色箭头。在勾勾的地方会有一个黄色感叹符号&#xff08;我已经解决了&#xff0c;所以没有显示&a…...

0506libMaven项目

0506libMaven项目包-CSDN博客 数据库字段 界面需求...

HTML飘落的花瓣

目录 写在前面 HTML​​​​​​​简介 完整代码 代码分析 系列推荐 写在最后 写在前面 本期小编给大家推荐HTML实现的飘落的花瓣&#xff0c;无需安装软件&#xff0c;直接下载即可打开~ HTML​​​​​​​简介 HTML&#xff08;Hypertext Markup Language&#xff…...

一个小调整,竟然让交换机、路由器的CPU占用率降低了50%

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 下午好&#xff0c;我的网工朋友。 在信息时代下&#xff0c;不仅仅在网络工程领域&#xff0c;高CPU占用率都是一个非常常见的问题&#xff0c;…...

echarts树图 改文本显示的地方的样式

树图改文本显示的时候的样式 虽然有点越改越丑 其中有一些失败的尝试 forammter 无法识别html元素 所以对于tooptips有用的html元素定义获取返回在这里写的话是不生效的 rich配置项里面的backgroundColor官方说支持 html元素和canvas元素 已经图片url 没有详细试验 官网地址 h…...

MYDB运行环境的搭建

前言 再将该项目跑起来之前&#xff0c;我想你的环境应该是准备的差不多啦&#xff01;只需要稍稍的配置一下即可。 我在本地已经跑通了&#xff0c;说是兼容JDK8&#xff0c;但我本地刚好有11就用了11啦&#xff0c;跑起来的方法在仓库的 readme 里写的很清楚。 在运行mvn c…...

Flink Stream API实践

目录 Flink程序的基本构成 获得执行环境&#xff08;environment&#xff09; 加载/初始化数据&#xff08;source&#xff09; 基于文件 基于socket 基于集合 自定义 转换操作&#xff08;transformation&#xff09; 基本转换 物理分区 任务链和资源组 名称和描述…...

AI图像生成-原理

一、图像生成流程总结 【AI绘画】深入理解Stable Diffusion&#xff01;站内首个深入教程&#xff0c;30分钟从原理到模型训练 买不到的课程_哔哩哔哩_bilibili 二、如果只是用comfy UI生成图片 1、找到下面几个文件&#xff0c;把对应模型移动到对应文件夹即可使用 2、选择对…...

【JavaScript】尺寸和位置

DOM对象相关的尺寸和位置属性 用于获取和修改元素在页面中的尺寸和位置。 只读属性&#xff1a; clientWidth和clientHeight&#xff1a;获取元素可视区域的宽度和高度&#xff08;padding content&#xff09;&#xff0c;不包括边框和滚动条。 offsetWidth和offsetHeight…...

Express框架下搭建GraphQL API

需要先下载apollo-server-express&#xff0c;apollo-server-express是Express框架下&#xff0c;用于构建GraphQL服务的中间件&#xff0c;属于Apollo Server的一部分&#xff1a; npm install apollo-server-express 随后在index.js添加 apollo-server-express包&#xff1…...

发布订阅模式

一、常见的发布订阅模式 1、Dom的事件 Event addEventListener dispatchEvent //订阅中心 const event new Event(zyk); //订阅 document.addEventListener(zyk, (value)>{console.log(我收到了&#xff1a;, value) }); //发布 document.dispatchEvent(e, 1); docume…...

【Java 演示灵活导出数据】

演示灵活导出数据 &#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;&#x1f389;【小吴小吴bug全无开通公众号】关注公众号获取第一时间博客动态 背景今天临时起兴打开稀土掘金导航栏看到页面推广gitee项目恰巧最近也在学习python了解到python爬虫很厉害&…...

一对一WebRTC视频通话系列(六)——部署到公网

本系列博客主要记录一对一WebRTC视频通话实现过程中的一些重点&#xff0c;代码全部进行了注释&#xff0c;便于理解WebRTC整体实现。 本专栏知识点是通过<零声教育>的音视频流媒体高级开发课程进行系统学习&#xff0c;梳理总结后写下文章&#xff0c;对音视频相关内容感…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...