在 c 中创建一个 FIFO 队列

标签 c arrays queue fifo

我正在尝试编写一个 FIFO 队列,该队列接收数据,一旦填满就释放最旧的数据,为新数据腾出空间。

我是编程新手,但设法想出了以下代码:

int Q[size], f=0, r=-1;

int Qfull()
{
    if (r==size) return 1;
    return 0;
}

int Qinsert()
{
    if(Qfull())
    {
        elem=Q[f];
        f=f+1;
        return elem;
        r++;
        Q[r]=SPI1BUF;

    }
    else
    {
        r++;
        Q[r]=SPI1BUF;
    }
}

我遇到的问题是,这不会移动数据,并且由于 r 增加超过数组大小,因此一旦数组已满就会失败。有没有办法解决这个问题?

最佳答案

What Dan said , 而且你真的不能在 return 后面放语句;他们不会被处决。

关于在 c 中创建一个 FIFO 队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19771786/

相关文章:

c - sigwait() 在 macOS 和 Linux 中的行为是否不同?

c - 为什么我们需要在作为原型(prototype)传递后将变量设置为 void?

c++ - 在 C++ 的可变参数模板中获取可变参数 size_t... 参数的总和

javascript - 使用 JavaScript 从函数返回数组。反转返回数组的顺序

java - 如何在无需用户输入的情况下在我的排队系统上添加自动 ID 号?

java - 如何在Java中克隆BlockingQueue?

java - SynchronousQueue 与 TransferQueue 之间的区别

C 递归函数调用概念

c - C 输出中的随机字节

arrays - 使用 Swift 查询 friend 的 friend