Letra "C" é a resposta correta:
Considerações: A minha lista começa no índice 0 (Zero):
package ProvasUfg;
public class ListaLinear {
public static void main(String[] args) {
// TODO Auto-generated method stub
Lista<String> lista = new Lista<String>();
/*
* Seja uma lista linear L com n elementos (n>5),
* o primeiro elemento está na posição 1 (um),
* o segundo elemento está na posição 2 (dois),
* e assim por diante. As operações para L são:
*/
lista.adiciona("A");
lista.adiciona("B");
lista.adiciona("C");
lista.adiciona("D");
lista.adiciona("E");
lista.adiciona("F");
lista.adiciona("G");
for (int i=0; i<lista.tamanho(); i++){
//insere(F, remove(F, i), 1)
lista.adiciona(0, lista.remover(i));
}
System.out.println("----------------------resultado");
for (int i=0; i<lista.tamanho(); i++){
System.out.println(lista.busca(i));
}
}
}
package ProvasUfg;
import java.lang.reflect.Array;
public class Lista<T> {
private T[] elementos;
private T[] elementosPosicao;
private int tamanho;
public Lista(int capacidade){
this.elementos = (T[]) new Object[capacidade]; //Solução do livro effective Java
this.elementosPosicao = (T[]) new Object[capacidade]; //Solução do livro effective Java
this.tamanho = 0;
}
public Lista(){
this(10);
}
public Lista(int capacidade, Class<T> tipoClasse){
this.elementos = (T[]) Array.newInstance(tipoClasse, capacidade);
this.elementosPosicao = (T[]) Array.newInstance(tipoClasse, capacidade);
this.tamanho = 0;
}
public boolean adiciona(int posicao, T elemento){
if (!(posicao >= 0 && posicao < tamanho)){
throw new IllegalArgumentException("Posição Inválida");
}
this.aumentaCapacidade();
//mover todos os elementos
for (int i=this.tamanho-1; i>=posicao; i--){
this.elementos[i+1] = this.elementos[i];
}
this.elementos[posicao] = elemento;
this.tamanho++;
return true;
}
public T remover(int posicao){
if (!(posicao >= 0 && posicao < tamanho)){
throw new IllegalArgumentException("Posição Inválida");
}
this.elementosPosicao[0] = this.elementos[posicao];
for (int i=posicao; i<this.tamanho-1; i++){
this.elementos[i] = this.elementos[i+1];
}
this.tamanho--;
return this.elementosPosicao[0];
}
@Override
public String toString() {
StringBuilder s = new StringBuilder();
s.append("[");
for (int i=0; i<this.tamanho-1; i++){
s.append(this.elementos[i]);
s.append(", ");
}
if (this.tamanho>0){
s.append(this.elementos[this.tamanho-1]);
}
s.append("]");
return s.toString();
}
}
----------------------resultado
G
F
E
D
C
B
A
insere(F, remove(F, i), 1) - Alternativa C
Exemplo de lista {1,2,3,4,5,6} - > n = 6
para i = 1 até n, faça
i = 1 -> o primeiro elemento vai para posição 1 e continua a mesma coisa.
i = 2 -> o segundo elemento vai para a posição 1, ficando {2,1,3,4,5,6}
i = 3 -> o terceiro elemento vai para a posição 1, ficando {3,2,1,4,5,6}
Assim segue até o sexto elemento, ficando {6,5,4,3,2,1}, ordem invertida, como a questão pede.