SóProvas


ID
3343807
Banca
CS-UFG
Órgão
UFG
Ano
2019
Provas
Disciplina
Algoritmos e Estrutura de Dados
Assuntos

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:


        insere(L, elemento, k): inserir elemento em L, tal que elemento fique na posição k;

        remove(L, k): remover de L o elemento que está na posição k e retornar o elemento removido.  

    Considere o pseudocódigo abaixo:

        para i = 1 até n, faça

            <instrução-X>

        fim-para 


Se o propósito do pseudocódigo é inverter a ordem dos elementos da Lista L, então <instrução-X> pode ser:

Alternativas
Comentários
  • 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.

  • Força Guerreiro!!!!!!