循环队列-队列的顺序表示和实现2

数据结构—队列的顺序表示和实现--循环队列 和顺序栈相类似,在队列的顺序存储结构中,除了用一组地址连续的存储单元依次存放从队列头到队列尾的元素之外,尚需附设两个整型变量 front和rear分别指示队列头元素及队列尾元素 1.队列的顺序表示 typedef struct { int *base; // 分配存储空间 int front; // 队头指针 int rear; // 队尾指针 }SqQueue; ... 阅读详情
/******************************************************************************/
// 循环队列-队列的顺序表示和实现2
// linux内核循环队列kfifo思想改编,性能超级高,FIFO性能优化的关键点:
// 1.队列大小为2的幂是为了使x % M == x & (M-1) 为真,位与运算的效率要比求余数
//   高很多
// 2.队头head和队尾tail必须是无符号的整数,这样可以使tail - head永远是队列的
//   长度,不管它们是否溢出
/******************************************************************************/
#define Queue_SIZE        ((uint32_t)0x00000080) // 队列的大小必须是2的幂
#define Queue_SUCCESS     ((uint32_t)0x00000000)
#define Queue_OVERFLOW    ((uint32_t)0x00000001)
#define Queue_EMPTY       ((uint32_t)0x00000002)


typedef struct
{
    uint32_t        *buf;   //队列的起始地址
    uint32_t        head;   //读出数据的位置
    uint32_t        tail;   //写下一个数据的位置
    uint32_t        size;   //队列的大小必须是2的幂
} Queue_TypeDef;


static uint32_t gQueue_Buf[Queue_SIZE];


void Queue_Init(Queue_TypeDef *Queue) 
{
    Queue->buf = gQueue_Buf;
    Queue->tail = 0;
    Queue->head = 0;
    Queue->size = Queue_SIZE;
}


uint32_t Queue_Put(Queue_TypeDef *Queue, uint32_t data)
{
    if (Queue->tail - Queue->head == Queue_SIZE)
    {
        return Queue_OVERFLOW;
    }
    Queue->buf[Queue->tail & (Queue->size - 1)] = data;
    Queue->tail++;


    return Queue_SUCCESS;
}


uint32_t Queue_Get(Queue_TypeDef *Queue)
{
    uint32_t data;


    if (Queue->tail == Queue->head)
    {
        return Queue_EMPTY;
    }
    data = Queue->buf[Queue->head & (Queue->size - 1)];
    Queue->head++;


    return data;
}


void Queue_Empty(Queue_TypeDef *Queue)
{
    Queue->tail  = 0;
    Queue->head  = 0;
}

c语言实现顺序循环队列 队列简称队,是一种操作受限的线性表,限制在于仅允许在表的一段进行插入操作,而在表的另一端进行删除操作。 进行插入的一段叫做队尾,进行删除的一端叫做队首,队又称作先入先出表。 队列到顺序表的映射如图: 采用顺序储存结构的队列成为顺序队。 ... 阅读详情

相关推荐

顺序循环队列的基本操作

【问题描述】 实现循环队列的基本操作。(循环队列最大长度不超过20) 【输入形式】 输入若干个整数(以空格分隔,非整数结束输入),其中0表示做出队操作,不为0的整数为入队元素。 【输出形式】 若出队错误输出“error”; 若最后队列为空,则输出“empty”; 若最后队列非空,依次输出队列的全部元素。 【样例输入1】 1 0 2 0 0 3 0 0 0 a 【样例输出1】 error 【样例输入2】 1 0 2 0 3 0 a 【样例输出2】 empty 【样例输入3】

w_nxsxs的博客 4225

Linux内核中队列的实现详解

任何操作系统内核都少不了一个编程模型:生产者和消费者。在该模式中,生产者创造数据(比如说需要读取的错误信息或者需要处理的网络包),而消费者则反过来,读取消息和处理包,或者以其他方式消费这些数据。实现该模型的最简单的方式无非是使用队列。生产者将数据推进队列,然后消费者从队列中摘取数据。消费者获取数据的顺序和推入队列的顺序一致。也就是说,第一个进入队列的数据一定是第一个离开队列的。也正是这个原因,队列...

caihaitao2000的博客 4367

python爬虫抖音 个人资料 仅供学习参考 切勿用于商业

本文仅供学习参考 切勿用于商业 本次爬取使用fiddler+模拟器(下载抖音APP)+pycharm 1. 下载最新版本的fiddler(自行百度下载),以及相关配置 1.1.依次点击,菜单栏-Tools-Options-HTTPS,如图1红框打钩,HTTPS旁边Connections配置,如图2红框打钩 1.2.再次点击HTTPS栏,点击Actions选择第二个…to ...

dbva7063的博客 1491

循环队列(顺序表示和实现)

队列有两种存储表示,顺序表示和链式表示。 98 和顺序栈相类似,在队列的顺序存储结构中,除了用一组地址连续的存储单元依次存放从队列头到队列尾的元素之外,尚需附设两个整型变量front和rear分别指向队列头元素和队列尾元素的位置(即称为头指针和尾指针)。 为了在C语言中描述方便起见,在此约定:初始化创建空队列时,令front=rear=0,每当插入新的队列尾元素时,尾指针rear增1:每当删除队列头元素时,头指针front增1。因此,在非空队列中,头指针始终指向队列头元素,而尾指针始终指向队列尾元素的下一个

weixin_47700137的博客 808

学习笔记【Day 20】鸿蒙PC应用在SD WAN MSTP场景用CodeArts test工具测试过程

多生成树协议(MSTP)作为二层网络高可靠、无环路的核心技术,其在鸿蒙 PC 上的兼容性与稳定性测试尤为重要。本文结合华为云 CodeArts TestPlan 全流程测试管理平台,详细拆解鸿蒙 PC 端 MSTP 功能的测试设计、环境搭建、执行验证。1.测试左移,保障迭代效率CodeArts TestPlan 将 MSTP 测试从后期集成阶段 “左移” 至开发早期,通过可复用用例库与自动化脚本,支持每次代码提交后的快速回归测试,避免网络功能稳定性因迭代被破坏。2.平台化工具破解复杂场景测试难题。

aiyijianghe的博客 1058

双击文件夹弹窗“找不到应用程序”,但是右键点击打开可以

此电脑、回收站、c、d、f盘、控制面板、任意文件夹等都没有办法双击打开。 右键中包含“使用filemanager打开”,是由于FileManager卸载残留导致的。 懒人专用附件 下载解压上面附件,双击导入可以清理FileManager软件残留 参考: 双击此电脑出现找不到应用程序,但是右键点击可以-其他-优快云问答https://ask.youkuaiyun.com/questions/7631439 电脑上的文件夹双击都提示找不到应用程序,但是右击打开就能打开,该怎么解决? - 知乎 (z

webmasterqpwou的博客 1万+

《数据结构》顺序队列的表示和实现(循环队列)

队列是仅在表尾部进行插入操作,在表头进行删除操作的线性表。表尾即 an 端,称为队尾,表头即 a1 端,称为队头。它是一种先进先出 (FIFO) 的线性表存储结构队列的存储结构分为链式队列和顺序队列 (常用循环顺序队列)

tyustli 787

Python多版本共存指南:用CMD命令一键切换3.6和3.8解释器(含pip使用技巧)

本文详细介绍了在Windows CMD环境下实现Python多版本(如3.6和3.8)共存与一键切换的完整方案。通过文件重命名策略、环境变量优化和自定义脚本,开发者可快速切换Python解释器版本,并管理各版本独立的pip依赖库,确保项目环境隔离与兼容性。

weixin_29035405的博客 423

【数据结构C语言】循环队列——队列的顺序表示和实现

/*队列是一种先进先出的线性表,它只允许在队尾插入元素,在队头删除元素*/ #include<stdio.h> #include<stdlib.h> #define MAXSIZE 100 typedef struct { int *base; int front;//头指针,指向对头,出队 int rear;//尾指针,指向对位,进队 }SqQue...

江~~~ 407

SystemUI-下拉去掉后去掉用户切换-去掉电源按键中的紧急呼叫

这里自己倒腾完成了两个常见需求:去除用户切换、去除紧急呼叫UI在去除用户切换时候,用到了Compose知识点,所以很难按照以前经验去找对应布局、找对应的View Item ,以往方法都只能部分借鉴的搞系统的还是要跟着谷歌学一点Compose技能了,方便日常开发调试。

十年饮冰,难凉热血 1459

ImportError: cannot import name ‘is_torch_npu_available‘ from ‘transformers.utils‘解决方案

本文主要介绍了ImportError: cannot import name ‘is_torch_npu_available’ from 'transformers.utils’解决方案,希望能对使用transformers的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 4万+

循环队列----队列的顺序表示和实现

1.队列的顺序表示 1)C语言的描述 初始化建空对列时,令front=rear=0,每当插入新的队尾元素时,“尾指针增1”;每当删除队列头元素时,“头指针增1”。因此,在非空队列中,头指针始终指向队列头元素,而尾指针始终指向队列尾元素的下一位置,如图所示。 2)存在问题 假设当前为队列分配的最大空间为6,则当队列处于图3.12(d)的状态时不可再继续插入新的队尾元素,否则会因数组越界而...

Bee_Darker的博客 3068

实战|基于Kappa架构的用户行为实时分析平台搭建教程

数据源:用Kafka存储全量数据(实时+历史),作为“事实来源”;处理引擎:用Flink等流处理引擎,读取Kafka中的数据,执行清洗、转换、聚合等操作;存储层:将处理结果写入实时存储(如Elasticsearch)或批量存储(如Hive);消费层:用可视化工具(如Kibana)展示结果,或提供API供业务系统调用。Kappa架构的关键设计原则全量数据存于Kafka:Kafka的“无限 retention”特性(默认保留7天,可配置更长)让它成为全量数据的存储介质;用流处理引擎处理所有数据。

Java大师兄的博客 797

【实战圣经】YOLOv8-pose姿态估计模型从训练到RK3588部署:让边缘端骨骼识别速度突破60FPS

本教程从“模型训练-转换-边缘部署”全链路拆解了YOLOv8-pose姿态估计方案在RK3588上的落地过程,每一步都经过实战验证。无论是智能健身的动作实时纠正,还是工业设备的关键部件姿态检测,这套流程都能让你以最低成本实现高精度、高实时性的姿态估计应用。如果你在实践中遇到模型转换报错、部署性能不达标等问题,可聚焦某一环节深入优化——毕竟,让AI在边缘端“精准捕捉每一个关键点”,才是技术驱动场景创新的核心。

m0_71589036的博客 251

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

队列的链式表示和实现----循环队列

循环队列----队列的顺序表示和实现

烽火前秦路 1488

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

数据结构笔记(十)-- 循环队列

队列的顺序表示和实现 一、循环队列概述 循环队列 是把顺序队列首尾相连,把存储队列元素的表从逻辑上看成一个环,成为循环队列。 队头指针(front) 指向队列的队头元素。 队尾指针(rear) 指向队列的最后一个元素的下一个元素。 pBase 指向块内存的首地址 二、循环队列存储结构 在顺序实现是 队尾指针和队头指针指的就是下标 typedef struct CircularQueue//队列参数 { int * pBase;//指向数组首地址的指针 int front;//出队下标指向队列的要出队

m0_43609475的博客 1538

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

循环队列——队列的顺序表示与实现(c语言)

顺序实现循环队列代码如下://用顺序实现循环队列的基本操作 //之所以使用循环队列是为了减少空间浪费 #include<stdio.h> #include<malloc.h> #define MAXSIZE 100struct Queue{ int *base; int front; int rear; };struct Queue InitQueue(); int QueueLength(stru

hg_zhh 1154

//使用顺序表实现循环队列的入队和出队

//使用顺序表实现循环队列的入队和出队 #include<iostream>using namespace std;const int MAX_SIZE = 100; typedef struct Queue { int q[MAX_SIZE]; int front; int rear; }*Queue;void enqueue(Queue &Q,int x) { i

黑白格的博客 2420

C++数据结构:循环队列基本运算的实现

实验要求 编写一个程序,以菜单形式实现循环队列的各种基本运算,并在此基础上设计一个主程序,完成如下功能: (1)初始化空队列 (2)建立循环队列 (3)入队 (4)出队 (5)判断队列是否为空,为空返回1,否则返回0 (6)判断队列是否为满,为满返回1,否则返回0 (7)取队头元素 (8)求队列的元素个数,并返回 (9)遍历输出队列元素 代码内容 #include<iostream> using namespace std; #define maxsize 10 //宏定义循环队列最大存储空间

qq_54388490的博客 4194

严蔚敏 《数据结构》第三章栈和队列 3.4节循环队列——队列的顺序表示和实现 C++实现

严蔚敏 《数据结构》第三章栈和队列 3.4节循环队列——队列的顺序表示和实现 C++实现 // sq_queue.h // 循环队列 // by Envirian #ifndef SQ_QUEUE_H_ #define SQ_QUEUE_H_ #include <bits/stdc++.h> using namespace std; using QElemType = int; class SqQueueClass { private: const int kMAXQSIZE = 1

桂圆儿的仓库 257

《数据结构初阶》实现顺序循环队列和链式队列

数组实现循环队列、单链表实现队列接口实现全解

m0_62171658的博客 4355

顺序队和循环队列,队列篇(顺序队和循环队列入队出队操作)

数据结构专升本学习,队列篇(顺序队和循环队列) 前言: 之前我们把栈学完了,比较简单,今天我们学习队列里面的顺序队和循环队列,说难不难,说简单不简单,我们需要认真学习,博主会尽力把原理和逻辑讲明白,不懂的童鞋可以认真多看几遍,博主真的很想教会大家。希望大家认真看,有问题的地方可以评论提出来,希望大家,喜欢。 每日一遍,防止早恋: 1.什么是队列 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进

qq_46104786的博客 1万+

队列(顺序队列,循环队列,链式队列)超详细讲解

本文是队列(包括顺序队列,循环队列,栈式队列的详细讲解)

m0_56992713的博客 5719

【数据结构】循环队列的实现

>✨给大家推荐一款很火爆的刷题、面试求职网站✨

记录学习点滴 5485

队列文档之循环队列

循环队列就是将顺序队列臆造成一个环状的空间(实际上不是,只是把它看成是环状的),即把存储队列元素的顺序表从逻辑上视为一个环。

二木成林 8957
上一篇: 循环队列-队列的顺序表示和实现1
下一篇: 循环队列-队列的顺序表示和实现3(linux内核实现)
lne8734
博客等级 码龄10年 7粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值