【数据结构】循环队列

本文介绍了循环队列的概念,包括如何定义队列结构体、入队、出队、判断队列是否为空或已满的操作。通过示例解释了当rear达到最大值后如何通过取模运算使其重置为0,以避免队列满的情况。同时,提出了使用size变量来跟踪队列长度,辅助判断队列状态的方法。
摘要由CSDN通过智能技术生成

定义队列结构体

typedef struct
{
    ElemType data[MAXSIZE];
    int front;   //标识队头,用于出队
    int rear;    //标识队尾,用于入队
    int size;    //队列元素计数

}SqQueue;

入队

int In_SeQueue(c_SeQueue* q,datatype x)
{
    if((q->rear+1)%MAXSIZE==q->front)//如果rear的下一位为front则队满
    return ERROR;

    else
    {
        q->data[q->rear]=x;
        q->rear=(q->rear+1)% MAXSIZE;
        return 1;
    }
}

front指向队头,rear指向队尾部,均从0开始

rear=front时队列为空
当rear=MAXSIZE时队列为满

假如rear指向下标9,即最后一个元素(如下图)
front指向3,即第四个元素,队列前三个位置为空
想要再插入元素就必须让rear重新指向0下标

Q.rear=[Q.rear+1]=x  //把x值赋给rear所在下标9
Q.rear=(Q.rear+1)%MAXSIZE; 

rear+1是为了让rear指向下一个要插入的下标


//此时rear为最后一个元素的下标,再+1就=MAXSIZE

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值