在Stack java中插入Queue的元素

时间:2016-05-19 14:48:39

标签: java stack queue

我正在做练习,这是文字: 该函数将队列Q,空堆栈S和整数k作为输入,并在S中插入Q的前k个元素,使得Q前面的元素位于S的顶部,Q的第k个元素例如,如果Q =< 6,8,7,15,20,9>,其中6是前面的元素,那么在调用insert(Q,S,4)之后我们有S =< 6,8,7,15>,其中6是顶部的元素。 我不能使用任何数据结构。 这是我的解决方案但不能正常工作,我按错误的顺序插入元素......

{{1}}

1 个答案:

答案 0 :(得分:0)

显然这是一种考试,所以我无法直接给你答案。

我能做的是向您展示找到解决方案的方向。

尝试以不同的形式编写问题:

  • 如果k为0则返回空堆栈
  • 如果k为1,则返回具有队列第一个元素的堆栈
  • 如果k为2且队列前面的元素为A,B返回堆栈,底部为B,顶部为A,则需要先插入B,然后插入第二个A
  • 如果k为45且队列前面的元素为A,则需要插入A,然后以相反的顺序插入其他44个元素

以这种形式编写它接缝递归算法。不是吗?

如果你可以使用递归,这个问题很简单。

只注意两点:

  • 队列Q会怎么样?有可能改变它吗?或者在流程结束时,您需要拥有原始Q?
  • 如果k大于Q的大小会怎样?返回异常?返回Q
  • 的所有元素的堆栈

如果无法进行递归,则需要插入一个新的数据结构(列表?数组?另一个堆栈,在这种情况下,任何可能性都很好)以维护中间步骤。