java - 将 Queue 和 Stack 相互复制

标签 java algorithm stack queue

我想用一个空栈S来检查队列Q是否包含元素x,因此我的解决方案是将Q的元素复制到S中并检查是否包含x,但我也被要求将S元素返回到Q中再次因为它是原始的,这必须只使用 Q 和 S 而不使用任何其他 SL 数组来完成,所以我写了这个算法:

Boolean found ← false
int element ←  0
While(Q is not empty) 

  element ← Q.dequeue()
  if(element equal x)
           found ← true
  S.push(element)

While(S is not empty)
 ( elements back to Q) ?

卡在最后一步,如果我使用 Q.enqueue(S.pop) 那么 Q 中元素的顺序将被颠倒

最佳答案

正确,顺序会颠倒。 这意味着如果您再次重复该算法(所有到 S 并返回到 Q),您将再次反转它,这意味着您将回到元素的原始顺序,这就是您想要的。

关于java - 将 Queue 和 Stack 相互复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27506730/

相关文章:

java - 如何使用 PowerMockRunner 模拟私有(private)或包保护类?

java - 密码 : What is the reason for IllegalBlockSizeException?

c# - arraylist 对象的排列

algorithm - 带有 GraphQL 响应属性过期的 JSON 对象缓存

java - 可以访问 findAll 规范方法的自定义存储库

java - Nifi "PutSQL"越界异常

c# - 将字符串 "172406"快速转换为整数 17、24、06

java - "call stack"和 "thread stack"之间的区别

c - C中的堆栈执行

c - 在 C 中连接到 TCP 堆栈