使用Array实现循环队列

时间:2016-03-14 10:07:44

标签: c

我尝试使用数组为令牌创建一个循环队列,以优先处理读取函数的过程。我到目前为止使用的是这段代码写入数组读取:

#define QUEUE_ELEMENTS 5
#define QUEUE_SIZE (QUEUE_ELEMENTS + 1)
int Queue[QUEUE_SIZE];
int QueueIn, QueueOut;

int QueuePut(uint8 new_token)
{
    if(QueueIn == (( QueueOut - 1 + QUEUE_SIZE) % QUEUE_SIZE))
    {
        return -1; /* Queue Full*/
    }
    Queue[QueueIn] = new_token;
    QueueIn = (QueueIn + 1) % QUEUE_SIZE;
    return 0; // No errors
}

int QueueGet(uint8 *old_token)
{
    if(QueueIn == QueueOut)
    {
        return -1; /* Queue Empty - nothing to get*/
    }
    *old_token = Queue[QueueOut];
    QueueOut = (QueueOut + 1) % QUEUE_SIZE;
    return 0; // No errors
}

我需要的是一个数组单元格的索引,我将我的值写入返回,我想用它来读取。要将索引设置为2,从索引为2的单元格读取,并在使用新值更新单元格编号2中的值之后。 我怎样才能做到这一点? 这是我需要使用令牌执行该队列数组的交互图。对于该方法获取令牌,我需要获取数组的索引,我将我的副本放入数组中,但我认为我的代码中的索引是 QueueIN only the critical part

0 个答案:

没有答案