出队功能无法正常工作

Dequeue function not working correctly

任何人都可以告诉我我的出队功能有什么问题吗?它总是一遍又一遍地保持第一个值,但在其他方面似乎运作良好。提供了示例输出。

NODE *dequeue(NODE **queue)
    {
        if (*queue == NULL)
        {
            return;
        }
        NODE *pTemp = *queue;
        printf("[%d %d] -> ", pTemp->pid, pTemp->priority);
        *queue = (*queue)->next;
        return pTemp;
    }

函数被这样调用:

NODE *someQueue;
//code to add values here
for (i = 0; i < numberOfQueueItems; i++)
{
    printf("\nDequeue time.\n");
    printList("readyQ", someQueue);
    dequeue(someQueue);
}

您没有正确调用 dequeue。它需要一个指向 NODE 的双指针,但你传递了一个指向 NODE

的指针

改变

dequeue(someQueue);

 dequeue(&someQueue);