Data structures 是否可以使用4个队列实现n个堆栈?
我知道如何使用一个或两个队列实现堆栈,但是使用4个队列的n个堆栈如何? 有可能吗?如果是,请解释一下算法好吗?谢谢。是的 假设您可以从2个队列实现一个堆栈(如您的问题所述),“4个队列”现在只是噪声,如果您可以使用2个堆栈实现n个堆栈,那么您的问题的答案是肯定的 这可以通过将元素和堆栈的id推送到堆栈来实现。弹出时,将元素推送到另一个堆栈,直到从所需的堆栈中找到元素,然后将它们返回 这可能会被优化以避免一次又一次的推回,但我相信最坏情况下的复杂性在元素数量上仍然是线性的 这是一个(非常未优化的)伪代码Data structures 是否可以使用4个队列实现n个堆栈?,data-structures,stack,queue,Data Structures,Stack,Queue,我知道如何使用一个或两个队列实现堆栈,但是使用4个队列的n个堆栈如何? 有可能吗?如果是,请解释一下算法好吗?谢谢。是的 假设您可以从2个队列实现一个堆栈(如您的问题所述),“4个队列”现在只是噪声,如果您可以使用2个堆栈实现n个堆栈,那么您的问题的答案是肯定的 这可以通过将元素和堆栈的id推送到堆栈来实现。弹出时,将元素推送到另一个堆栈,直到从所需的堆栈中找到元素,然后将它们返回 这可能会被优化以避免一次又一次的推回,但我相信最坏情况下的复杂性在元素数量上仍然是线性的 这是一个(非常未优化的)
Pop(stack_number):
element = null
while not head_stack.empty():
if head_stack.peek()[0] == stack_number:
element = head_stack.pop()
break
else:
other_stack.push(head_stack.pop())
while not other_stack.empty():
head_stack.push(other_stack.pop())
return element
Push(stack_number, element):
head_stack.push({stack_number, element})