删除队列中的最后一个元素

3 algorithm

如果我的问题与本网站无关,我很抱歉.

我需要删除队列的最后一个元素.我可以使用的唯一操作是Peek() - 获取第一个元素而不删除它,Enqueue(元素) - 将一个元素插入队列的后面,Dequeue() - 删除第一个元素和IsEmpty() - true或false队列是否为空.我不能使用任何数组或队列来帮助我,并且元素的数量不可用.

现在,我想到了一些解决方案,但每次我都卡住了,因为我不知道如何判断当前元素是否是最后一个元素.

提前致谢.再次,抱歉,如果这不是这类问题的正确位置.

Tri*_*dad 9

贾斯汀比尔的解决方案更直接.但我认为它可以在不创建另一个队列的情况下完成.

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)