我想调用此方法将队列中的一部分元素发送到队列的后面,但是当我在main中调用它时,它只显示一个空队列。 有没有更好的方法来做到这一点。
//m: the number of customers initially in line
//n: the portion of m that will be sent to the back of the queue today
public T lastCustomer(int m, int n)
{
int count;
ListNode<T> processed = new ListNode<T>(front.data);
while(rear!=null)
{
for(count=0;count< n;count++)
{
T extracted = dequeue();
boolean check = enqueue(extracted);
if(check == true) continue;
else break;
}
processed.data = dequeue();
m--;
n=m/2;
}
return processed.data;
}
答案 0 :(得分:0)
你得到空队列的原因是
while(rear!=null)
结合:
processed.data = dequeue();
您出列的时间很长,因为rear
为null
且队列为空。
对于您的任务,您实际上并不需要m
:
public T lastCustomer(int n){
T result = null;
while(n > 0){
result = dequeue();
enqueue(result);//you probably don't need to check the result(depends on your implementation)
n--;
}
return result
}
这应该做的工作
编辑:忘了n--;
编辑:合理化变量