Data structures 是否可以使用4个队列实现n个堆栈?

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

我知道如何使用一个或两个队列实现堆栈,但是使用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})