出队重复

Dequeuing Duplicates

我有问题。我了解如果重复项首先使用头和尾,如何将它们出列,但我不明白如何使用队列的默认接口函数实现相同的效果:initializeQueue(), enqueue(), dequeue(), front() and queueEmpty()

q1 = 1,1,1,4,5q1 = 4,5 假定重复项始终排在列表的第一位

int dequeueEquivalent(Queue* queue)
{
    int dequeue= 0;
    for(int i =0; i<5; i++){
       //if statment maybe?
        dequeue(queue);
        dequeue++;
    }
    return dequeue;

}

其中一个想法是将所有内容出队,然后将不等于 front() 值的所有内容入队。我不知道这样做是否正确。服务器上面的功能是我的起点,如果需要可以随意更改所有内容。这个想法可能是错误的,所以我愿意接受任何建议

假设如所述的重复项在列表中排在第一位,您可以这样做

int dequeueEquivalent(Queue* queue)
{
    int dequeue= 0;
    int head = front(*queue);
    for(int i =0; i<5; i++){
     if(front(*queue) == head )
        {
            dequeue(*queue);
            dequeue++;
        }
    }
    return dequeue;

}