Adicionar Elementos no meio e final de uma Lista em Java

2 respostas
D

Estou fazendo um trabalho de faculdade de estrutura de dados onde preciso criar um lista que contem 20 e é tem um classificação desses elementos elemento tem a classificação gold, silver e iron. Caso o elemento for a primeira opção e necessário adicionar no inicio da lista, se for a segunda opção devo adicionar na 5 posição da lista e se for a ultima e preciso ser adicionada no final da lista. Consegui adicionar no inicio da lista mais no meio e no final não esta dando certo. Alguém poderia me ajudar?

2 Respostas

Dragoon

Se fez alguma coisa?
Tem algum código para ajudar?

D

package tacalibertadores2019;

import javax.swing.JOptionPane;

public class TacaLibertadores2019 {

public static void main(String[] args) {
    Lista lista = new Lista();
    Torcedor to = new Torcedor();

    
    
    do{
    lista.escolha = Integer.parseInt(JOptionPane.showInputDialog("1 = Gold; 2 = Silver ou 3 Iron"));
    to.nome = JOptionPane.showInputDialog("Digite nome do Torcedor:");
    to.programa = JOptionPane.showInputDialog("Digite o Tipo de programa do torcedor: ");
    to.ingresso = Integer.parseInt(JOptionPane.showInputDialog("Qtd Ingresso: "));
    
    switch(lista.escolha){
        case 1:
          lista.AdicionarNoComeco(lista);
            
            System.out.println("-----------------------------------------");
            System.out.print("Torcedor: " + to.nome + "    ");
            System.out.print("Tipo do Programa: " + to.programa + "   ");
            System.out.println("Qtd Ingresso: " + to.ingresso + "    ");
            System.out.println("------------------------------------------");

        break;
        
        case 2:
            lista.Adiciona(5, lista);
            System.out.println("-----------------------------------------");
            System.out.print("Torcedor: " + to.nome + "    ");
            System.out.print("Tipo do Programa: " + to.programa + "   ");
            System.out.println("Qtd Ingresso: " + to.ingresso + "    ");
            System.out.println("------------------------------------------");
            
        break;
        
        case 3:
            
        break;
        
            
        default: JOptionPane.showMessageDialog(null, "Operaca nao encontrada ");
        
    }
    }while((lista.escolha == 1)||(lista.escolha == 2)|| (lista.escolha == 3));
    
}

}

package listaencadeadasimples1;

public class Celula { //quadradinho
//atributos
Celula Proxima;
Object Elemento; //toda vez que utiliza o Object e um elemento generico

//metodos // as classe cria o quadrado
Celula(Celula proxima, Object elemento){
    this.Proxima = proxima; //this propria class o que pode usar
    this.Elemento = elemento;
}

//class para o proxima
Celula(Object elemento){
    this.Elemento = elemento;
}

//cita a proxima celula
void setProxima(Celula proxima){ // faz a ~ligação dos quadrados
    this.Proxima = proxima; // this joga para dentro do atibuto da class
}
//retorna qual e a celula - quando acha o elemento que quer resgata a celula
Celula getProxima(){//get buscando
    return (this.Proxima);
}
//mostra (retorna) o elemento que esta dentro da celula
Object getElemento(){
    return (this.Elemento);
}

}

package tacalibertadores2019;

public class Lista {

int escolha;

Celula Priemeira; //cria referencia para primeira celula
Celula Ultima; //referencia para ultima celula
int TotaldeElementos = 0; 

//metodos
//verifica se a posição esta ocupada
boolean PosicaoOcupada(int pos){ 
    return((pos >= 0) && (pos < this.TotaldeElementos));
}

//ira pegar a celula - busca a celula e verifica se a posição existe ou não
Celula PegaCelula(int pos){
    if(!this.PosicaoOcupada(pos)){
        throw new IllegalArgumentException("Posicao nao existe");
    }
    else{
        Celula atual  = this.Priemeira; //celula atual recebe a primeira celula apontando tbm para primeira celula
        for(int i = 0; i < pos; i++){
            atual = atual.getProxima();
        }
        return(atual);
    }
}

Object Pega (int pos){
    return(this.PegaCelula(pos).getElemento()); // localiza qual e a celula e busca a informação dentro da celula
}

//metodo de adicionar
//metodo de adicionar no começo da lista
void AdicionarNoComeco(Object elemento){
    if(this.TotaldeElementos == 0){ //quando nao tem nenhuma celula
        Celula nova = new Celula(elemento);
        this.Priemeira = nova; 
        this.Ultima = nova;
    }
    else{//cria uma nova celula
        Celula nova = new Celula(this.Priemeira, elemento); //this.primeira para pegar como referencia coloca o elemento dentro 
        this.Priemeira.setAnterior(nova);//
        this.Priemeira = nova;
    }
    this.TotaldeElementos++; //atualiza 
}
//adiciona objetos (informações)
void Adiciona(Object elemento){
    if(this.TotaldeElementos == 0){
       this.AdicionarNoComeco(elemento);
    }
    else{
        Celula nova = new Celula(elemento);
        this.Ultima.setProxima(nova);
        nova.setAnterior(this.Ultima);
        this.Ultima = nova;
        this.TotaldeElementos++;
    }
}

//Adiciona object (informações) na lista numa determinada posição
void Adiciona(int pos, Object elemento){
    if(pos ==  0){
        this.AdicionarNoComeco(elemento);
    }
    else if(pos == this.TotaldeElementos){
        this.Adiciona(elemento);
    }
    else{
        Celula anterior = this.PegaCelula(pos-1);//pega a posição anterior
        Celula proxima = anterior.getProxima();
        Celula nova = new Celula(anterior.getAnterior(), elemento);
        nova.setAnterior(anterior);
        anterior.setProxima(nova);
        proxima.setAnterior(nova);
        this.TotaldeElementos++;
    }
}
//remover
void RemovendoComeco(){
    if(!this.PosicaoOcupada(0)){
        throw new IllegalArgumentException("Posicao nao Existe");
    }
    else{
        this.Priemeira = this.Priemeira.getProxima();
        this.TotaldeElementos--; //-1
    }
    if(this.TotaldeElementos == 0){
        this.Ultima = null;
    }
}

void RemoveFim(){
    if(!this.PosicaoOcupada(TotaldeElementos-1)){
        throw new IllegalArgumentException("Posicao nao existe");
    }
    else{
        if(this.TotaldeElementos == 1){
            this.RemovendoComeco();
        }
        else{
            Celula penultima = this.Ultima.getAnterior();
            penultima.setProxima(null);
            this.Ultima = penultima;
            this.TotaldeElementos--; 
        }
    }
}

void Remove (int pos){
    if(!this.PosicaoOcupada(pos)){
       throw new IllegalArgumentException("Posicao nao existe"); 
    }
    else{
        if(pos == 0){
            this.RemovendoComeco();
        }
        else if (pos == this.TotaldeElementos - 1){
            this.RemoveFim();
        }
        else{
            Celula anterior = this.PegaCelula(pos-1);
            Celula atual = anterior.getProxima();
            Celula proxima = atual.getProxima();
            anterior.setProxima(proxima);
            proxima.setAnterior(anterior);
            this.TotaldeElementos--;
        }
    }
}

    //verifica se determinado obejec esta na lista
boolean Contem(Object elemento){
    Celula atual = this.Priemeira;
    while(atual != null){
        if(atual.getElemento().equals(elemento)){
            return(true);
        }
        atual = atual.getProxima(); 
    }
    return(false);
}

int tamanho(){
    return(this.TotaldeElementos);
}

void EsvaziaLista(){
    this.Priemeira = null; 
    this.Ultima = null;
    this.TotaldeElementos = 0;

}

String imprimir(){
    if(this.TotaldeElementos == 0){
        return("[]");
}
    else{
        StringBuilder builder = new StringBuilder("[");
        Celula atual = this.Priemeira;
        
        for(int i = 0; i < this.TotaldeElementos - 1; i++){
            builder.append(atual.getElemento());
            builder.append(",");
            atual = atual.getProxima();
        }
        builder.append(atual.getElemento());
        builder.append("]");
        return(builder.toString());
    }
}

}

package tacalibertadores2019;

public class Torcedor {

String nome;

String programa;

int ingresso;

}
Criado 7 de novembro de 2019
Ultima resposta 8 de nov. de 2019
Respostas 2
Participantes 2