Ano: 2013 Banca: CESGRANRIO Órgão: BNDES Prova: Analista de Sistemas - Analista de Sistemas - Desenvolvimento
Qual implementação do método concat() produz o resultado descrito ABAIXO?
Imagem da Questão
A
public Stack<Integer> concat(Stack<Integer> s1,Stack<Integer> s2)
{
    Stack<Integer> nova=new Stack<Integer>();
    for( ;!s1.empty();nova.push(s1.pop()));
    for( ;!s2.empty();nova.push(s2.pop()));
    return nova;
}
B
public Stack<Integer> concat(Stack<Integer> s1,Stack<Integer> s2)
{
    for( ;!s1.empty();s2.push(s1.pop()));
    return s2;
}
C
public Stack<Integer> concat(Stack<Integer> s1,Stack<Integer> s2)
{
    Stack<Integer> nova=new Stack<Integer>();
    ArrayList<Integer> aux=new ArrayList<Integer>();
    for( ;!s1.empty();aux.add(s1.pop()));
    for( ;!s2.empty();aux.add(s2.pop()));
    for(int i=0;i<aux.size();i++)
        nova.push(aux.get(i));

    return nova;
}

D
public Stack<Integer> concat(Stack<Integer> s1,Stack<Integer> s2)
{
    Integer i;
    if(s1.empty())
        return s2;
    i=s1.pop();
    concat(s1,s2);
    s2.push(i);
    return s2;
}
E
public Stack<Integer> concat(Stack<Integer> s1,Stack<Integer> s2)
{
    Integer i=null,j=null;
    Stack<Integer> nova=new Stack<Integer>();
    if(s1.empty() && s2.empty())
        return s2;
    if(!s1.empty())
        i=s1.pop();
    if(!s2.empty())
        j=s2.pop();
    concat(s1,s2);
    if(i!=null)
        nova.push(i);
    if(j!=null)
        nova.push(j);
    return nova;
}