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?
Adicionar Elementos no meio e final de uma Lista em Java
D
2 Respostas
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
Alura Sistemas operacionais: entenda seu conceito e suas funções Descubra o que são sistemas operacionais, suas funções e tipos. Aprenda tudo de forma clara e objetiva. Não perca tempo!
Casa do Codigo Orientacao a Objetos: Aprenda seus conceitos e suas... Por Thiago Leite e Carvalho — Casa do Codigo