我的任务是编写添加到队列后面并从前面删除的函数。
我已经编写了要添加到队列中的函数:
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;
}
}
以上是我最好的尝试,但它不起作用,我想知道是否有人可以提供帮助?我意识到这可能是一个基本问题,但我对此很新。
答案 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;
}
}