力扣刷题-循环队列

news2024/12/24 21:14:47

🌈个人主页:羽晨同学 

💫个人格言:“成为自己未来的主人~”  

思路:

我们在这里采用的是用数组的形式实现循环链表,我认为这个用数组是更为简单的,我们只需要控制下标就可以实现循环链表的效果。具体实现代码如下: 




typedef struct {
    int*a;
    int front;
    int rear;
    int size;
    int capacity;
} MyCircularQueue;


MyCircularQueue* myCircularQueueCreate(int k) {
    MyCircularQueue*obj=(MyCircularQueue*)malloc(sizeof(MyCircularQueue));
    obj->a=(int*)malloc(sizeof(int)*(k+1));
    obj->front=0;
    obj->rear=0;
    obj->size=0;
    obj->capacity=k+1;
    return obj;
}

bool myCircularQueueEnQueue(MyCircularQueue* obj, int value) 
{
    if((obj->rear+1)%(obj->capacity)==obj->front)
    {
        return false;
    }
    else
    {
        obj->a[obj->rear]=value;
        //4
        obj->rear=(obj->rear+1)%(obj->capacity);
    }
    obj->size++;
    return true;

}

bool myCircularQueueDeQueue(MyCircularQueue* obj) 
{
    if(obj->front==obj->rear)
    {
        return false;
    }
    else{
        obj->front=(obj->front+1)%(obj->capacity);
    }
    obj->size--;
    return true;
}

int myCircularQueueFront(MyCircularQueue* obj) 
{
    if(obj->size>=1)
    {
        return obj->a[obj->front];
    }
    else
    {
        return -1;
    }
}

int myCircularQueueRear(MyCircularQueue* obj) 
{
    if(obj->size>=1)
    {
        return obj->a[(obj->rear-1+obj->capacity)%(obj->capacity)];
    }
    else
    return -1;
    
}

bool myCircularQueueIsEmpty(MyCircularQueue* obj) 
{
    return obj->front==obj->rear;   
}

bool myCircularQueueIsFull(MyCircularQueue* obj) 
{
    return (obj->rear+1)%(obj->capacity)==obj->front;
}

void myCircularQueueFree(MyCircularQueue* obj) 
{
    free(obj->a);
    obj->a=NULL;
    obj->front=obj->rear=obj->size=obj->capacity=0;
    free(obj);    
}

/**
 * Your MyCircularQueue struct will be instantiated and called as such:
 * MyCircularQueue* obj = myCircularQueueCreate(k);
 * bool param_1 = myCircularQueueEnQueue(obj, value);
 
 * bool param_2 = myCircularQueueDeQueue(obj);
 
 * int param_3 = myCircularQueueFront(obj);
 
 * int param_4 = myCircularQueueRear(obj);
 
 * bool param_5 = myCircularQueueIsEmpty(obj);
 
 * bool param_6 = myCircularQueueIsFull(obj);
 
 * myCircularQueueFree(obj);
*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2036427.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python数据可视化案例——折线图

目录 json介绍: Pyecharts介绍 安装pyecharts包 构建一个基础的折线图 配置全局配置项 综合案例: 使用工具对数据进行查看 : 数据处理 json介绍: json是一种轻量级的数据交互格式,采用完全独立于编程语言的文…

2024 该学前端还是学后端?

2024 该学前端还是学后端? 现状分析pragmatic-drag-and-drop后端开发 现状分析 对于这个问题,个人作为Java后端开发者,那么当然是比较熟悉Java后端开发,从这么久的工作体验来说,因为个人也是比较熟悉Java后端&#xf…

【第19章】Spring Cloud之Gateway自定义Logback配置

文章目录 前言一、内置配置1. 关联依赖2. 内置配置 二、自定义配置1. 日志级别2. 彩色日志3. 自定义配置4. 增加打印语句5. 效果展示 总结 前言 网关层作为我们程序的主入口,有着至关重要的作用,下面我们通过自定义Logback配置增强网关层的日志输出&…

【实用工具】Stirling-PDF入门安装教程: 优质开源的PDF处理工具/编辑工具

文章目录 项目简介功能展示Page Operations 页面操作Conversion Operations 转换操作Security & Permissions 安全与权限Other Operations 其他业务 如何安装并使用Docker RunDocker Compose 项目简介 这是一款使用 Docker 的基于本地托管网络的强大 PDF 操作工具。它能让…

2024年翻译工具新风尚:实时翻译与精准度并进

语言交流的障碍随着全球化的不断深入日益成为连接不同文化和国家的挑战。然而,在科技日新月异的今天,类似谷歌翻译这样的工具正在高速发展这。这次我们来一起探讨深受用户喜欢的翻译工具有哪些。 1.福昕在线翻译 链接直达:https://fanyi.pd…

贷齐乐系统最新版SQL注入(绕过WAF可union select跨表查询)

目录 标题:贷齐乐系统最新版SQL注入(绕过WAF可union select跨表查询) 内容: 一,环境部署 二,源码分析 三,sql注入 总结: [回到顶部](#article_top) 一&am…

Linux使用学习笔记1到2 命令行与shell 基础运维命令

在学习使用ubuntu等各种喜他构建服务器的过程中遇到很多问题,意识到只是跟着网络的教程没办法管理好一个完整的应用部署和运行。遂开始学习linux基本知识,以应对服务器常见问题和软件的使用和维护。 shell 望文生义,大概意思是一个外壳&…

交错字符串[中等]

优质博文:IT-BLOG-CN 一、题目 给定三个字符串s1、s2、s3,请你帮忙验证s3是否是由s1 和s2交错 组成的。 两个字符串s和t交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串: s s1 s2 ... sn t t1 t2 …

数据结构---单链表实现

单链表是什么 我的理解是“特殊的数组”,通过访问地址来连接起来 1怎么创建链表 ----通过结构体(成员有存入数据的data和指向下一个节点的地址的指针(结构体指针)next 初始架构---DataType 对应存入数据类型,此处的N…

一款基于Java外卖配送系统,专为多商户入驻设计,包含用户端、商家端、配送端以及总管理后台(附源码)

前言 在当前的外卖配送市场中,软件系统的状态常常面临一些挑战,例如多商户管理复杂性、用户体验不一致、后端服务的稳定性和安全性等。这些痛点不仅影响了商户和用户的满意度,也限制了平台的扩展性和发展潜力。 为了解决这些现状&#xff0…

B站搜索建库架构优化实践

前言 搜索是B站的重要基础功能,需要对包括视频、评论、图文等海量的站内优质资源建立索引,处理来自用户每日数亿的检索请求。离线索引数据的正确、高效产出是搜索业务的基础。我们在这里分享搜索离线架构整体的改造实践:从周期长,…

【论文阅读】BoT-SORT: Robust Associations Multi-Pedestrian Tracking

题目:BoT-SORT: Robust Associations Multi-Pedestrian Tracking 作者:Nir Aharon* Roy Orfaig Ben-Zion Bobrovsky motivation: 作者来得很直接,就说他们用相机运动模型和优化卡尔曼做了个可以解决具有挑战的跟踪问题的算法:BOT-SORT;说他们…

工程数学线性代数(同济大学数学系)第六版(更新中)

第1章 行列式 2 全排列和对换 一、排列及其逆序数 全排列 1个逆序、逆序数 奇排列,偶排列 二、对换 对换:排列中任意两个元素对调 相邻对换:相邻两个元素对换 对换改变排列的奇偶性。 4 行列式的性质 5 行列式按行(列&…

有趣的的rce漏洞复现分析

目录 无字母数字绕过正则表达式 解读代码 解题思路 异或 或 取反 无字母数字绕过正则表达式 首先我们依然是搭建环境&#xff08;环境依然是Ubuntu下部署&#xff0c;和之前的漏洞环境一样&#xff09; <?php error_reporting(0); highlight_file(__FILE__); $code…

<数据集>车间工人、安全帽、安全背心识别<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;3465张 标注数量(xml文件个数)&#xff1a;3465 标注数量(txt文件个数)&#xff1a;3465 标注类别数&#xff1a;3 标注类别名称&#xff1a;[person, helmet, vest] 序号类别名称图片数框数1person346594732helm…

Android 13 GMS 内置壁纸

如图&#xff0c;原生系统上&#xff0c;设备上的壁纸 显示系统内置壁纸。如果没有添加内置壁纸&#xff0c;就显示默认的壁纸。点击进去就是预览页面 扩展下&#xff0c;默认壁纸在 frameworks/base/core/res/res/drawable-sw720dp-nodpi/default_wallpaper.png frameworks/b…

云开发微信小程序--即时聊天(单人聊天,多人聊天室)

云开发微信小程序–即时聊天 介绍&#xff1a;本小程序包含欢迎界面&#xff0c;注册&#xff0c;登录&#xff0c;一对一聊天&#xff0c;群聊&#xff0c;好友添加请求验证过程&#xff0c;修改好友备注以及删除好友&#xff0c;退出群聊&#xff0c;特殊角色卡片展示&#…

Android中的EventBus的用法

1. EventBus简介 EventBus是一个优化了的事件发布/订阅模式实现的库&#xff0c;常用于Android程序组件间的通信。它可以简化不同组件之间的通信工作&#xff0c;避免复杂和耦合的依赖关系。EventBus通过事件驱动来降低代码耦合度&#xff0c;提高开发效率和代码清晰性。 2. …

自动化数据采集:Lua爬虫与JSON解析的深度整合

在互联网数据采集领域&#xff0c;自动化技术的应用日益广泛。Lua语言以其轻量级和灵活性&#xff0c;成为开发高效爬虫的理想选择。而JSON作为Web数据交换的标准格式&#xff0c;其解析技术在Lua爬虫开发中占据了核心地位。本文将探讨如何将Lua爬虫与JSON解析深度整合&#xf…

C++学习指南(四)------string

欢迎来到繁星的CSDN。本期内容主要包括字符串string。 一、什么是string&#xff1f; C语言中的string 我们在C语言中已经遇到过字符串了。 那为什么C还要单独的列出来string呢&#xff1f; 尽管这里包的头文件是iostream&#xff0c;但arr数组储存常量字符串123456789的形式仍…