复制堆栈中的元素?

时间:2016-02-21 21:37:51

标签: java stack queue

所以我有一个方法来获取一堆Integers,并以相同的顺序返回所有元素重复的堆栈。我的问题是我目前使用的方法,我在所有情况下都遇到无限循环问题,除非Stack是空的。如果没有循环问题,我该怎么做才能完成复制?

public void stutter(Stack<Integer> Integ)
{
    Integer first;

    for(int i = 0; i < Integ.size(); i++)
    {
         first = Integ.pop();
         Integ.push(first);
        Integ.push(first);
    }
}

3 个答案:

答案 0 :(得分:1)

每次推送另一个整数时,都会增加堆栈的原始大小,向前推动“i”限制。

你应该返回一个新的Stack,最好使用(pre java8):

public Stack<Integer> stutter(Stack<Integer> from) {
    Stack<Integer> stk = new Stack<>();
    for(Integer i: from) {
        stk.push(i);
        stk.push(i);
    }
    return stk;
}

答案 1 :(得分:0)

ofc,它是一个无限循环。您将循环内的Integ.size()增加Integ.push()

尝试类似的东西。保存var中​​的大小,开始将新元素推入其中。

int size = Integ.size();
for(int i = 0; i < size; i++){
   first = Integ.pop();
   Integ.push(first);
   Integ.push(first);
}

答案 2 :(得分:0)

只需创建带有重复项的新堆栈(并在需要时替换旧版本)。