出队重复
Dequeuing Duplicates
我有问题。我了解如果重复项首先使用头和尾,如何将它们出列,但我不明白如何使用队列的默认接口函数实现相同的效果:initializeQueue(), enqueue(), dequeue(), front() and queueEmpty()
q1 = 1,1,1,4,5
到 q1 = 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;
}
我有问题。我了解如果重复项首先使用头和尾,如何将它们出列,但我不明白如何使用队列的默认接口函数实现相同的效果:initializeQueue(), enqueue(), dequeue(), front() and queueEmpty()
q1 = 1,1,1,4,5
到 q1 = 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;
}