Duvida sobre multilistas

2 respostas
Douglas_Magno

Eu fiz uma lista que recebe Disciplina faz tudo de uma lista ligada
Eu fiz uma lista que recebe Aluno faz tudo de uma lista ligada

eu quero fazer a conexão usando multilista entre a disciplina e seus respectivos alunos que estam pagando ela

quero saber como eu vou fazer essa relação

qualquer coisa peçam o codigo que eu posto

2 Respostas

Douglas_Magno
ta ai meu codigo
public class ListaDisciplina
{
   private Celula primeira;
   
   private Celula ultima;
   
   private Celula aluno;
   
   private int totalDeDisciplinas; 
   
   private boolean posicaoOcupada(int posicao){
        return posicao>= 0 && posicao <this.totalDeDisciplinas;
   }

   public ListaDisciplina(){
   }
  
    private Celula pegaCelula(int posicao) {
        if(!this.posicaoOcupada(posicao)){
            throw new IllegalArgumentException("Posição não existe");
        }
        Celula atual = primeira;
        for (int i= 0; i < posicao;i++) {
            atual = atual.getProxima();
        }
        return atual;
    }

    //adiciona um objeto que pode ser qualquer coisa
    public void adiciona(Object disciplina) {
       if (this.totalDeDisciplinas == 0) {
           this.adicionaNoComeco(disciplina);
        } else {
            Celula nova = new Celula(disciplina);
            this.ultima.setProxima(nova);
            this.ultima =nova;
            this.totalDeDisciplinas++;
        }
    }
    public void adiciona(int posicao, Object disciplina) {
        if(posicao ==0){ // No começo.
            this.adicionaNoComeco(disciplina);
        } else if(posicao == this.totalDeDisciplinas){ // No fim.
            this.adiciona(disciplina);
        } else {
            Celula anterior = this.pegaCelula(posicao -1);
            Celula nova= new Celula(anterior.getProxima(), disciplina);
            anterior.setProxima(nova);
            this.totalDeDisciplinas++;
        }

    }
    public Object pega(int posicao) {
       return this.pegaCelula(posicao).getDisciplina();
    }
    public void remove(int posicao){
        if (!this.posicaoOcupada(posicao)) {//checa se existe a posição
            throw new IllegalArgumentException("Posição não existe");
        }
        if (posicao == 0) {//checa se é a primeira da lista
            this.removeDoComeco();//se for remove do começo
        } else if(posicao == this.totalDeDisciplinas - 1) {//senao, se a posição igual a ultima, remove do fim
            this.removeDoFim();
        } else {
            Celula anterior= this.pegaCelula(posicao -1);
            Celula atual= anterior.getProxima();
            Celula proxima = atual.getProxima();
            anterior.setProxima(proxima); 
           // proxima.setAnterior(anterior);   // Tem erro aqui
            this.totalDeDisciplinas--;
        }
    }
    public int tamanho() {
        return  this.totalDeDisciplinas;
    }
    public boolean contem(Object disciplina) {
       Celula atual= this.primeira;
       while (atual!= null) {
           if (atual.getDisciplina().equals(disciplina)) {
               return true;
            }
            atual = atual.getProxima();
        }
        return false;
    }
    public void adicionaNoComeco(Object disciplina){
        Celula nova= new Celula(this.primeira,disciplina);
        this.primeira = nova;
        if(this.totalDeDisciplinas == 0){
            // caso especial da lista vazia
            this.ultima = this.primeira;
        }
        this.totalDeDisciplinas++;
    }

    public void removeDoComeco() {
        if (!this.posicaoOcupada(0)) {
            throw new IllegalArgumentException("Posição não existe");
        }
        this.primeira= this.primeira.getProxima();
        this.totalDeDisciplinas--;
        if (this.totalDeDisciplinas == 0) {
            this.ultima =null;
        }
    }
    public void removeDoFim() {
        if (!this.posicaoOcupada(this.totalDeDisciplinas -1)) {
            throw new IllegalArgumentException("Posição não existe");
        }
        if (this.totalDeDisciplinas == 1) {
            this.removeDoComeco();
        } else {
            Celula penultima = this.pegaCelula(totalDeDisciplinas -2);
            penultima.setProxima(null);
            this.ultima =penultima;
            this.totalDeDisciplinas--;
        }
    }
    public String toString() {
        // Verificandose a Lista está vazia
        if(this.totalDeDisciplinas == 0){
            return "[]";
        }
        StringBuilder builder = new StringBuilder("[");
        Celula atual = primeira;
        // Percorrendo até o penúltimo elemento.
        for (int i= 0; i < this.totalDeDisciplinas - 1; i++) {
            builder.append(atual.getDisciplina());
            builder.append(",");
            atual = atual.getProxima();
        }
        // último elemento
        builder.append(atual.getDisciplina());
        builder.append("]");
        return builder.toString();
    }
}
aqui esta o codigo da lista da disciplina
Douglas_Magno
o codigo da lista de aluno
public class ListaAluno
{
   private Aluno primeira;
   
   private Aluno ultima;
   
   private int totalDeAlunos; 
   
   private boolean posicaoOcupada(int posicao){
        return posicao>= 0 && posicao <this.totalDeAlunos;
   }

   public ListaAluno(){
   }
  
    private Aluno pegaAluno(int posicao) {
        if(!this.posicaoOcupada(posicao)){
            throw new IllegalArgumentException("Posição não existe");
        }
        Aluno atual= primeira;
        for (int i= 0; i < posicao;i++) {
            atual = atual.getProxima();
        }
        return atual;
    }

    //adiciona um objeto que pode ser qualquer coisa
    public void adiciona(String aluno) {
       if (this.totalDeAlunos == 0) {
           this.adicionaNoComeco(aluno);
        } else {
            Aluno nova = new Aluno(aluno);
            this.ultima.setProxima(nova);
            this.ultima =nova;
            this.totalDeAlunos++;
        }
    }
    public void adiciona(int posicao, String aluno) {
        if(posicao ==0){ // No começo.
            this.adicionaNoComeco(aluno);
        } else if(posicao == this.totalDeAlunos){ // No fim.
            this.adiciona(aluno);
        } else {
            Aluno anterior = this.pegaAluno(posicao -1);
            Aluno nova = new Aluno(anterior.getProxima(), aluno);
            anterior.setProxima(nova);
            this.totalDeAlunos++;
        }

    }
    public String pega(int posicao) {
       return this.pegaAluno(posicao).getAlunos();
    }
    public void remove(int posicao){
        if (!this.posicaoOcupada(posicao)) {//checa se existe a posição
            throw new IllegalArgumentException("Posição não existe");
        }
        if (posicao == 0) {//checa se é a primeira da lista
            this.removeDoComeco();//se for remove do começo
        } else if(posicao == this.totalDeAlunos - 1) {//senao, se a posição igual a ultima, remove do fim
            this.removeDoFim();
        } else {
            Aluno anterior = this.pegaAluno(posicao -1);
            Aluno atual = anterior.getProxima();
            Aluno proxima = atual.getProxima();
            anterior.setProxima(proxima); 
           // proxima.setAnterior(anterior);   // Tem erro aqui
            this.totalDeAlunos--;
        }
    }
    public int tamanho() {
        return  this.totalDeAlunos;
    }
    public boolean contem(String alunos) {
       Aluno atual= this.primeira;
       while (atual!= null) {
           if (atual.getAlunos().equals(alunos)) {
               return true;
            }
            atual = atual.getProxima();
        }
        return false;
    }
    public void adicionaNoComeco(String alunos){
        Aluno nova= new Aluno(this.primeira,alunos);
        this.primeira = nova;
        if(this.totalDeAlunos == 0){
            // caso especial da lista vazia
            this.ultima = this.primeira;
        }
        this.totalDeAlunos++;
    }

    public void removeDoComeco() {
        if (!this.posicaoOcupada(0)) {
            throw new IllegalArgumentException("Posição não existe");
        }
        this.primeira= this.primeira.getProxima();
        this.totalDeAlunos--;
        if (this.totalDeAlunos == 0) {
            this.ultima =null;
        }
    }
    public void removeDoFim() {
        if (!this.posicaoOcupada(this.totalDeAlunos -1)) {
            throw new IllegalArgumentException("Posição não existe");
        }
        if (this.totalDeAlunos == 1) {
            this.removeDoComeco();
        } else {
            Aluno penultima = this.pegaAluno(totalDeAlunos -2);
            penultima.setProxima(null);
            this.ultima =penultima;
            this.totalDeAlunos--;
        }
    }
    public String toString() {
        // Verificandose a Lista está vazia
        if(this.totalDeAlunos == 0){
            return "[]";
        }
        StringBuilder builder = new StringBuilder("[");
        Aluno atual = primeira;
        // Percorrendo até o penúltimo elemento.
        for (int i= 0; i < this.totalDeAlunos - 1; i++) {
            builder.append(atual.getAlunos());
            builder.append(",");
            atual = atual.getProxima();
        }
        // último elemento
        builder.append(atual.getAlunos());
        builder.append("]");
        return builder.toString();
    }
}
o codigo esta praticamente igual pois as duas listas estão separadas pois eu ainda não soube fazer a relação entre elas
Criado 23 de setembro de 2010
Ultima resposta 23 de set. de 2010
Respostas 2
Participantes 1