首页 > 其他分享 >2023-04-01-循环队列CycleSqQueue的基本操作

2023-04-01-循环队列CycleSqQueue的基本操作

时间:2023-04-01 09:44:27浏览次数:44  
标签:01 return 04 int MAXSIZE CySqQueue front 基本操作 rear

//循环链表
//牺牲一个单元来区分队空还是队满
#include <stdio.h>
#include <stdbool.h>

#define MAXSIZE 6

typedef struct
{
    int data[MAXSIZE];
    int front,rear;
}CySqQueue;

void initCySqQueue(CySqQueue *C)//初始化循环链表
{
    C->front=0;
    C->rear=0;
}

bool isEmpty(CySqQueue C)//判断是否为空
{
    if(C.front==C.rear)
    {
        return true;
    }
    else
    {
        return false;
    }
}

bool EnCyQueue(CySqQueue *C,int e)//!!入队
{
    if((C->rear+1)%MAXSIZE==C->front)//重点,判断队是否已满
    {
        return false;
    }
    else
    {
        C->data[C->rear]=e;
        C->rear=((C->rear)+1)%MAXSIZE;//通过此条语句来实现循环队列
        return true;
    }
}

bool DeCyQueue(CySqQueue *C,int *e)//出队操作
{
    if(isEmpty(*C))//判断队是否为空
    {
        return false;
    }
    else
    {
        *e=C->data[C->front];
        C->front=(C->front+1)%MAXSIZE;//!!重点,不要忘记对MAXSIZE求余
        return true;
    }
}

int main()
{
    CySqQueue C;
    initCySqQueue(&C);
    int x;
    for(int i =0;i<MAXSIZE-1;i++)
    {
        scanf("%d",&x);
        EnCyQueue(&C,x);
    }
    printf("C.front: %d C.rear: %d\n",C.front,C.rear);
    printf("front_value: %d rear_value: %d\n",C.data[C.front],C.data[C.rear-1]);//rear当前所指的是牺牲区,所以rear-1才是最后一个元素

    int *e;
    int a=0;
    e=&a;

    DeCyQueue(&C,e);
    printf("out_value: %d C.front: %d\n",*e,C.front);
    EnCyQueue(&C,888);
    printf("%d %d",C.rear,C.data[5]);//?,不能用rear-1来获取最后一个元素,因为当rear等于0时,rear-1为-1不存在
    return 0;
}

 

标签:01,return,04,int,MAXSIZE,CySqQueue,front,基本操作,rear
From: https://www.cnblogs.com/ryuichi-ssk/p/17278110.html

相关文章

  • 读SQL进阶教程笔记04_集合运算
    1. 集合论是SQL语言的根基1.1. UNION1.1.1. SQL-86标准1.2. NTERSECT和EXCEPT1.2.1. SQL-92标准1.3. 除法运算(DIVIDEBY)1.3.1. 没有被标准化2. 注意事项2.1. SQL能操作具有重复行的集合,可以通过可选项ALL来支持2.1.1. 不允许重复2.1.1.1. 直接使......
  • 多媒体技术2023-04-01
    格式工厂,转换图片 Photoshop新建,类型:照片,打印,图稿和插图,web,移动设备,胶片和视频。颜色模式,背景色 打开图片:可以放大图片,然后看到每个像素点。图像菜单栏,打开图像大小,宽高是厘米。图像-->模式-->RGB            -->8bit通道每个颜色占8bit,所以......
  • 人月神话阅读笔记01
    由于该书所描述的内容比较庞杂,本人预计将分为三篇文章对于相关内容和感想进行阐述。作为开章第一篇,就先来说说为什么“人月”是“神话”。小学的时候我们都做过这样的应用题:“工厂需要加工一批零件,安排5名工人的话需要10小时完成,那么安排25名工人加工,多少小时可以完成”之类的。......
  • 项目一众筹网07_01_SpringSecurity框架简介和用法、SpringSecurity负责的是 权限验证
    项目一众筹网07_01_SpringSecurity文章目录项目一众筹网07_01_SpringSecurity01简介SpringSecurity负责的是权限验证02-SpringSecurity简介03-Spring的注解模式maven引入Spring环境04-准备测试环境05-加入SpringSecurity环境06-实验1-放行首页和静态资源(下一篇)01简介现在主流的权......
  • 项目一众筹网06_01_【权限控制】角色和权限分配、Admin分配Role、Role分配Auth、前端j
    系列文章目录众筹网文章目录系列文章目录01-角色和权限分配-引入02-Admin分配Role-目标和思路03Admin分配Role创建中间表有些表是不需要实体类的自然也就不需要做逆向工程04-Admin分配Role-前往分配页面-handler方法05-Admin分配Role-前往分配页面-Service方法和SQL06-Admin分......
  • 项目一众筹网05_01_[树形结构开发]菜单维护-树形结构基础知识、自关联、zTree的介绍和
    树形结构开发]菜单维护文章目录树形结构开发]菜单维护01-菜单维护-树形结构基础知识-上==在数据库中怎么去表示树形关系====其实这就是自关联====我们怎么识别根节点==02-菜单维护-树形结构基础知识-下03-页面显示树形结构-后端-逆向工程==开发的细节:如何避免空指针异常:初始化==04-......
  • 项目一众筹网04_4_角色维护删除_单条删除和批量删除怎么实现_确认提示,,你真的要删除吗_
    角色维护删除系列文章目录文章目录角色维护删除系列文章目录22-删除-目标和思路(下一篇)单条删除和批量删除怎么实现批量删除和单条删除合成一套思路图23-后端==在这里我们就@RequestBody和@ResponseBody都用到了==24-前端-打开模态框25-前端-执行删除如何判断代码是否是动态生成的前......
  • Flask快速入门day 01(flask介绍、快速使用、配置文件、路由系统)
    目录Flask框架前言:一、flask介绍1、介绍2、使用两种协议编写web二、flask快速使用1、快速使用:2、使用flask编写登录小案例2.1login.html2.2home.html2.3detail.html2.4py文件三、flask配置文件1、配置文件的几种方式方式一:直接编写方式二:使用app.config方式三:使用py文件,然后......
  • 通过Sysmon+Nxlogs收集Windows Server 2012服务器日志-并以Syslog形式发送Json格式数
    0x01环境介绍WindowsServer2012已经安装部署好了域控,目的除了收集Windows服务器本身的日志外还收集域控环境下的各种日志。0x02Nxlog配置和使用使用社区版本即可,下载地址:https://nxlog.co/downloads/nxlog-ce#nxlog-community-edition使用的版本是当前最新版本安装过程就省略,......
  • 关于SQLsever2012报错的一些经验总结
    问题描述:数据库连接实例时出现报错情况;问题截图:  故障软件:SQLsever2012操作系统:windowssever2022R2数据中心期望结果:可以打开之前的实例 总结经验: 上面这张图是1月15号出现的,距离今天已经过去了40天,当时查询了n多资料也没有解决的这个问题,由于过年和其他事务的出现,以至于在......