【发布时间】:2014-02-06 11:19:09
【问题描述】:
我正在尝试使用此函数从队列的前面删除一个值。它似乎第一次工作(虽然我可能错了)但是当第二次释放节点时它触发了一个使程序崩溃的断点。我该如何解决这个问题?
printf("Value removed = %d\n", dequeue(myQueue));
int dequeue(queue q)
{
if (q == NULL || q->head == NULL)
{
return 0;
}
node * head = q->head;
node * temp = head;
if (temp == NULL)
{
return;
}
int returnValue = head->value;
//Free first node in queue
head = temp->next;
free(temp);
//Return value that was removed
return returnValue;
}
【问题讨论】:
-
你忘记更新 q->head
-
干杯。现在一切都好。 :)
-
显示你的队列结构?
-
btw temp is head 所以
if (temp == NULL){ return; }不需要。 -
请贴出
queue的定义。