力扣设计循环队列

这篇具有很好参考价值的文章主要介绍了力扣设计循环队列。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.使用了数组来表达循环

2.循环队列是否为空

3.循环队列是否已满。

4.初始化

5.向循环队列插入一个元素。如果成功插入则返回真

                         6.从队首获取元素。如果队列为空,返回 -1 

                                7.获取队尾元素。如果队列为空,返回 -1

                                                      8.销毁空间


力扣设计循环队列,leetcode,算法,数据结构

1.使用了数组来表达循环

力扣设计循环队列,leetcode,算法,数据结构

typedef struct {
    int k;//数据个数
    int *a;//数组
    int rear;//尾
    int front;//头
} MyCircularQueue;

2.循环队列是否为空

力扣设计循环队列,leetcode,算法,数据结构

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

3.循环队列是否已满。

力扣设计循环队列,leetcode,算法,数据结构

bool myCircularQueueIsFull(MyCircularQueue* obj) {
    return (obj->rear+1)%(obj->k+1) == obj->front;
}
4.初始化

MyCircularQueue* myCircularQueueCreate(int k) {
    MyCircularQueue*obj = (MyCircularQueue*)malloc(sizeof(MyCircularQueue));
    obj->a = (int*)malloc(sizeof(int)*(k+1));
    obj->k = k;
    obj->rear = obj->front = 0;
    return obj;
}
5.向循环队列插入一个元素。如果成功插入则返回真

力扣设计循环队列,leetcode,算法,数据结构

bool myCircularQueueEnQueue(MyCircularQueue* obj, int value) {
     if(myCircularQueueIsFull(obj))
         return false;

   obj->a[obj->rear] = value;
   obj->rear++;
     
     obj->rear %= (obj->k+1);
     return true;
}
6.从队首获取元素。如果队列为空,返回 -1 

力扣设计循环队列,leetcode,算法,数据结构

int myCircularQueueFront(MyCircularQueue* obj) {
    if(myCircularQueueIsEmpty(obj))
        return -1;

    return obj->a[obj->front];
}
7.获取队尾元素。如果队列为空,返回 -1

力扣设计循环队列,leetcode,算法,数据结构文章来源地址https://www.toymoban.com/news/detail-729398.html

int myCircularQueueRear(MyCircularQueue* obj) {
     if(myCircularQueueIsEmpty(obj))
        return -1;

  return obj->a[(obj->rear+obj->k)%(obj->k+1)];
}
8.销毁空间
void myCircularQueueFree(MyCircularQueue* obj) {
      free(obj->a);
      free(obj);
}

到了这里,关于力扣设计循环队列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构与算法分析】使用C语言实现队列的两种(带头结点与不带头结点)链式存储,并且给出一种循环队列的设计思想

      当我们编写程序时,经常需要处理各种数据结构。队列是一种常见的数据结构,它有着广泛的应用场景。队列的基本操作包括入队和出队,应用于模拟等待队列、消息队列、计算机缓存等场合。   在实际编程中,我们可以用不同的数据结构来实现队列。本文主要介绍了

    2024年02月08日
    浏览(121)
  • 【数据结构和算法】--队列的特殊结构-循环队列

    循环队列是队列的一种特殊结构,它的 长度是固定的 k ,同样是 先进先出 ,理论结构是 首尾相连的环形循环结构 。其理论结构大致如下: 具体结构描述可以参考 LeetCode : 622. 设计循环队列的题目要求,大致如下: 设计你的循环队列实现。 循环队列是一种 线性数据结构 ,

    2024年02月04日
    浏览(49)
  • 【数据结构与算法】03 队列(顺序队列--循环队列--优先级队列--链队列)

    队列( queue )是一种常见的数据结构,它遵循先进先出(FIFO)的原则。队列可以理解为一个具有两个端点的线性数据结构,其中一个端点称为\\\"队尾\\\"(rear),用于插入新元素,另一个端点称为\\\"队首\\\"(front),用于移除元素。新元素被插入到队尾,而最早插入的元素总是在队

    2024年02月08日
    浏览(55)
  • 数据结构OJ:设计循环队列

    本题为LeetCode上的经典题目,题目要求我们设计一种循环队列,满足FIFO原则且队尾被连接在队首之后。 题目中介绍循环队列的好处是可以重复利用空间,所以我们很容易想到在初始化时即开辟指定大小的空间,之后便不需要再开辟空间,只需后续销毁即可。 首先我们要选择

    2024年04月17日
    浏览(66)
  • 【力扣--622】设计循环队列

    🖊作者 : D. Star. 📘专栏 : 数据结构 😆今日分享 : 丢脸其实并没有那么可怕,我们可以从另一个角度来想:别人能够记住我了,而且过了还有多少人能记得我呢?虽然这种出场不太优雅😆 【力扣–622】设计循环队列 设计你的循环队列实现。 循环队列是一种线性数据结构,

    2024年02月06日
    浏览(34)
  • 力扣设计循环队列

    目录 1.使用了数组来表达循环 2.循环队列是否为空 3.循环队列是否已满。 4.初始化 5.向循环队列插入一个元素。如果成功插入则返回真                          6.从队首获取元素。如果队列为空,返回 -1                                  7.获取队尾元素。如果队列为

    2024年02月07日
    浏览(34)
  • 力扣622:设计循环队列(中等)

    目录 思考 一,循环队列的初始化myCircularQueueCreate 二,判断是否为空myCircularQueueIsEmpty 三,判断队列是否满了bool myCircularQueueIsFull 四,队列的插入myCircularQueueEnQueue 五,队列的删除myCircularQueueDeQueue 六,队列取头元素和尾元素myCircularQueueFront   //   myCircularQueueRear 七,销毁队列

    2024年03月13日
    浏览(38)
  • 【算法与数据结构】232、LeetCode用栈实现队列

    所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。    思路分析 :这道题要求我们用栈模拟队列(工作上一定没人这么搞)。程序当中,push函数很好解决,直接将元素push进输入栈当中。pop函数需要实现队列先进先出的操作,而栈是先进后出。只

    2024年02月12日
    浏览(44)
  • 【C++】【数据结构】循环队列的基本操作(初始化、入队、出队、取队头元素、遍历输出队列、求队列长度)顺序队列的算法实现【附全代码】

    使用c++完成数据结构循环队列的基本操作,包括(初始化、入队、出队、取队头元素、遍历输出队列、求队列长度等),可直接编译运行。 队列 又称为 “先进先出” (FIFO)线性表。限定插入操作只能在队尾进行,而删除操作只能在队首进行。 循环队列 ——采用 顺序存储结构

    2023年04月16日
    浏览(53)
  • 数据结构与算法之队列: Leetcode 621. 任务调度器 (Typescript版)

    任务调度器 https://leetcode.cn/problems/task-scheduler/ 描述 给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或

    2024年02月02日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包