Questão de Algoritmos e Estrutura de Dados — Estrutura de Dados — CESGRANRIO 2013
Algoritmos e Estrutura de DadosEstrutura de Dados
- Código
- cg000067
- Banca
- CESGRANRIO
- Órgão
- BNDES
- Ano
- 2013
- Nível
- Superior
- Cargo
- Profissional Básico - Análise de Sistemas - Desenvolvimento
O método concat(s1,s2) recebe duas pilhas como parâmetros e retorna a concatenação de s1 com s2. Por exemplo, suponha que as pilhas abaixo sejam passadas para concat():
O método concat() irá produzir uma pilha na qual o elemento que estará no seu topo será o topo da pilha s1. Além disso, o elemento no topo de s2 ficará imediatamente abaixo da base de s1. A Figura a seguir exibe a pilha produzida pelo método concat() a partir das pilhas s1 e s2:
Qual implementação do método concat() produz o resultado descrito acima?
O método concat() irá produzir uma pilha na qual o elemento que estará no seu topo será o topo da pilha s1. Além disso, o elemento no topo de s2 ficará imediatamente abaixo da base de s1. A Figura a seguir exibe a pilha produzida pelo método concat() a partir das pilhas s1 e s2:
Qual implementação do método concat() produz o resultado descrito acima?- Apublic 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;}
- Bpublic Stack<Integer> concat(Stack<Integer> s1,Stack<Integer> s2) { for( ;!s1.empty();s2.push(s1.pop())); return s2;}
- Cpublic 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;}
- Dpublic 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;}
- Epublic 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;}