首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用环形缓冲区实现队列的代码

使用环形缓冲区实现队列的代码
EN

Stack Overflow用户
提问于 2019-05-12 14:33:45
回答 1查看 67关注 0票数 1

这是用C实现具有环形缓冲区的队列的程序的一部分,我不理解第8-9行。if(q->rear == q->max) q->rear = 0;这一行到底是什么意思?

如果后部索引等于最大容量...然后将零分配给后方?T_T,请帮帮我!

代码语言:javascript
复制
int Enque(IntQueue* q,int x)
{
    if (q->num >= q->max)
        return -1;
    else {
        q->num++;
        q->que[q->rear++] = x;
        if(q->rear == q->max)
            q->rear = 0;
        return 0;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-12 14:46:40

q->que[]是一个整数数组。通过在数组中指定索引来访问单个数组q->que[]整数元素,例如:q->que[n];,其中n是从0(q->max - 1)的值。

q->rear表示数组q->que[]的索引。q->rear的值可以是从0(q->max -1)的任何值。因此,如果q->rear等于q->max,它将表示一个超出q->que[]数组末尾的索引,并且(作为循环队列)必须放回到数组的开头(q->que[0])。

因此,逻辑如下:

代码语言:javascript
复制
if (q->rear == q->max)
    q->rear = 0;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56096760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档