Can anyone tell me what's wrong with my dequeue function? It's always keeping the first value over and over, but otherwise seems to be working good. Sample output provided.
NODE *dequeue(NODE **queue)
{
if (*queue == NULL)
{
return;
}
NODE *pTemp = *queue;
printf("[%d %d] -> ", pTemp->pid, pTemp->priority);
*queue = (*queue)->next;
return pTemp;
}
Function is being called as such:
NODE *someQueue;
//code to add values here
for (i = 0; i < numberOfQueueItems; i++)
{
printf("\nDequeue time.\n");
printList("readyQ", someQueue);
dequeue(someQueue);
}
You are not calling dequeue
correctly. It expects a double pointer to NODE but you pass a pointer to NODE
Change
dequeue(someQueue);
to
dequeue(&someQueue);