我正在尝试编写一个 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 增加超过数组大小,它将失败。有没有办法解决这个问题?