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