当前位置: 首页 > 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;对音视频相关内容感…...

5种手柄映射方案让手游玩家实现主机级操控体验

5种手柄映射方案让手游玩家实现主机级操控体验 【免费下载链接】escrcpy &#x1f4f1; Display and control your Android device graphically with scrcpy. 项目地址: https://gitcode.com/GitHub_Trending/es/escrcpy 手机游戏操控优化一直是困扰玩家的核心痛点&…...

[Java 算法] 动态规划(4)

练习一 : 最长递增子序列 300. 最长递增子序列 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int lengthOfLIS(int[] nums) {int n nums.length;int[] dp new int[n];// 初始化&#xff1a;每个元素至少是长度为1的子序列Arrays.fill(dp, 1);int maxLen …...

Obsidian: 图片管理插件-Local Images Plus与Paste Image Rename的进阶配置指南

1. 为什么需要图片管理插件 如果你经常用Obsidian写笔记&#xff0c;肯定遇到过这样的烦恼&#xff1a;从网页复制粘贴的图片默认存放在系统剪贴板&#xff0c;关闭笔记后图片就消失了&#xff1b;或者随手粘贴的图片文件名杂乱无章&#xff0c;过段时间根本分不清是哪篇笔记的…...

技术指南|USB接口全解析:从Type-A到Type-C的演变与应用

1. USB接口的前世今生&#xff1a;从Type-A到Type-C的进化之路 记得我第一次接触电脑时&#xff0c;那个蓝色的USB接口让我印象深刻。当时只知道它叫"USB"&#xff0c;后来才知道那是Type-A接口。20多年过去&#xff0c;USB接口已经经历了翻天覆地的变化。从最初的T…...

完整指南:如何高效使用SecHex-Spoofy进行Windows系统伪装与安全测试

完整指南&#xff1a;如何高效使用SecHex-Spoofy进行Windows系统伪装与安全测试 【免费下载链接】SecHex-Spoofy C# HWID Changer &#x1f511;︎ Disk, Guid, Mac, Gpu, Pc-Name, Win-ID, EFI, SMBIOS Spoofing [Usermode] 项目地址: https://gitcode.com/gh_mirrors/se/Se…...

霍里思特获2亿融资,矿业分选新势力崛起?

硬氪消息&#xff0c;矿石AI智能分选设备企业霍里思特完成近2亿元C轮融资&#xff0c;由招商局资本领投。该公司技术实力强&#xff0c;产品优势明显&#xff0c;市场表现佳&#xff0c;未来发展值得关注。融资情况与用途霍里思特完成近2亿元C轮融资&#xff0c;由招商局资本领…...

华为云CCE内网部署Nacos集群实战:不用Helm,纯页面操作搞定镜像上传与配置

华为云CCE内网部署Nacos集群实战&#xff1a;纯控制台操作指南 在企业级容器化部署场景中&#xff0c;内网环境下的服务部署往往面临特殊挑战。当安全合规要求严格限制外网访问时&#xff0c;传统依赖公网镜像仓库和Helm工具的部署方案便不再适用。本文将详细介绍如何在华为云…...

Pixel Script Temple多场景落地:政务宣传短视频、乡村振兴纪录片脚本生成

Pixel Script Temple多场景落地&#xff1a;政务宣传短视频、乡村振兴纪录片脚本生成 1. 专业剧本创作工具介绍 Pixel Script Temple&#xff08;像素剧本圣殿&#xff09;是一款基于Qwen2.5-14B-Instruct大模型深度优化的专业剧本创作工具。它将先进的AI推理能力与独特的8-B…...

保姆级教程:用LangFlow可视化工具3步搭建智能问答机器人,无需代码

保姆级教程&#xff1a;用LangFlow可视化工具3步搭建智能问答机器人&#xff0c;无需代码 1. 为什么选择LangFlow&#xff1f; 想象一下&#xff0c;你有一个绝妙的AI应用创意&#xff0c;但面对复杂的代码和API文档却无从下手。LangFlow就是为解决这个问题而生的可视化工具&…...

TensorRT-LLM与Triton Server部署实战:从环境配置到模型推理

1. 环境准备&#xff1a;从零搭建TensorRT-LLM与Triton Server基础环境 第一次接触TensorRT-LLM和Triton Server时&#xff0c;我花了整整三天时间在环境配置上踩坑。现在回想起来&#xff0c;大部分问题都源于对NVIDIA生态工具链的不熟悉。下面我会用最直白的语言&#xff0c;…...