如果我的问题与本网站无关,我很抱歉.
我需要删除队列的最后一个元素.我可以使用的唯一操作是Peek() - 获取第一个元素而不删除它,Enqueue(元素) - 将一个元素插入队列的后面,Dequeue() - 删除第一个元素和IsEmpty() - true或false队列是否为空.我不能使用任何数组或队列来帮助我,并且元素的数量不可用.
现在,我想到了一些解决方案,但每次我都卡住了,因为我不知道如何判断当前元素是否是最后一个元素.
提前致谢.再次,抱歉,如果这不是这类问题的正确位置.
贾斯汀比尔的解决方案更直接.但我认为它可以在不创建另一个队列的情况下完成.
object RemoveLast(Queue q) {
object first = q.Peek();
object current = null;
while (true) {
current = q.Dequeue();
if (q.Peek() == first) {
break;
}
q.Enqueue(current);
}
return current;
}
Run Code Online (Sandbox Code Playgroud)