C编程使用FIFO从队列中删除(先进先出)

时间:2014-10-22 10:35:41

标签: c queue

我的任务是编写添加到队列后面并从前面删除的函数。

我已经编写了要添加到队列中的函数:

void queue_put(Queue *q, Qitem *new_item)
{

    new_item->next = NULL;

    if (queue_empty(q)){

            q->front = new_item;

    } else {

            q->back->next = new_item;
    }

    q->back = new_item;

}

这很好但我正在努力编写从队列前面删除的函数:

Qitem * queue_get(Queue *q)
{
    if (queue_empty(q)) {

            return (Qitem *)0;

    } else {

            Qitem front_item = q->front;
            q->front = q->front->next;
            return front_item;
    } 

}

以上是我最好的尝试,但它不起作用,我想知道是否有人可以提供帮助?我意识到这可能是一个基本问题,但我对此很新。

1 个答案:

答案 0 :(得分:0)

这个怎么样?

Qitem * queue_get(Queue *q)
{
    if (queue_empty(q)) {

            return (Qitem *)0;

    } else {

            Qitem *front_item = q->front;
            Qitem *back_item = q->back;
            q->front = q->front->next;
            if (front_item == back_item) {
               q->back = NULL; // single element
            }
            return front_item;
    } 
}