AGRADECIMENTO...

Pessoal, Gostaria de pedir desculpas aqueles que deixam perguntas/comentários/elogios/críticas e ainda não foram respondidos.

Aproveito a oportunidade para informar a todos que devido a correria do dia a dia não conclui o curso de BSI, por isso meus conhecimentos são limitados rsrsrs...

Ainda não retirei o blog do ar porque tem ajudado a diversos estudantes, principalmente os iniciantes.

As vezes, quando o trabalho me permite, ainda arrisco tentar resolver algumas questões rs... mas para não deixar esse blog parar no tempo, o ESTUDANTE que quiser enviar a resolução de alguma questão (código próprio) para o meu e-mail, terei o prazer de posta-la neste blog e será mantido a autoria.

Desde já agradeço a todos pelas visitas e desejo bons estudos.

Thiago Campos
(srthiago@hotmail.com)

domingo, 17 de março de 2013

Métodos inserir, remover, tamanho e imprimir numa lista duplamente encadeada.

Pessoal, continuando... disponibilizo os meus métodos tamanho, imprimir, remover e inserir numa lista duplamente encadeada.

    public int tamanho(){ //esse metodo vai retornar a qtd de elementos da lista
        Usuario temp = primeiro;        
        int totalElementos = 0;
        //vai percorrer e incrementar a variavel totalElementos
        while(temp != null){
            temp = temp.getProx();
            totalElementos++;
        }       
        return totalElementos;
    } //fim do metodo total


 public void imprimir() { //esse metodo vai imprimir os elementos da lista
        //variavel
        Usuario temp = primeiro; //crio a variavel
        //percorro a lista
        while (temp != null) { //Enqto a temp for != null           
            temp.imprimir(); //imprima
            temp = temp.getProx(); //temp receba o prox da fila
        }//fim do while               
    } //fim do metodo


 public void remove(int matricula) { //este metodo vai remover um elemento numa lista duplamente encadeada
        if (primeiro != null) { //se a lista não estiver vazia
            //se for remover o primeiro
            if (primeiro.getMatricula() == matricula) {
                this.primeiro = this.primeiro.getProx();
            } else {
                Usuario temp = primeiro.getProx();
                temp.setAnt(primeiro);
                //percorre a lista
                while (temp != null && temp.getMatricula() != matricula) {
                    temp = temp.getProx();
                }
                //se temp for diferente de null é pq encontrou mat =
                if (temp != null) {
                    temp.getAnt().setProx(temp.getProx());
                    temp.getProx().setAnt(temp.getAnt());
                } //fim do if
            } //fim do else
        } //fim do if
    } //fim do metodo remova


public void inserir(int pos, Usuario novo){
        Usuario temp = primeiro;
        int posicao = 0;
        int tamanho = tamanho(); // metodo que retorna o tamanho da lista
       
        if(temp == null){
            novo.setAnt(null);
            novo.setProx(null);
            primeiro = novo;
        } else if (pos > -1 && pos <= tamanho) {
            while (temp.getProx() != null && pos != posicao) { //temp.getProx() != null pq temp nao pode ser null
                posicao++; //incrementa a posição
                temp = temp.getProx();
            } //fim do while
            if (pos == 0) { //inserir na primeira posição
                novo.setProx(temp);
                novo.setAnt(null);
                temp.setAnt(novo);
                primeiro = novo;
            } else if (pos < tamanho) { //inseri em qualquer posição
                novo.setProx(temp);
                novo.setAnt(temp.getAnt());
                temp.getAnt().setProx(novo);
                temp.setAnt(novo);
            } else { //inseri na ultima posição
                novo.setAnt(temp);
                novo.setProx(null);
                temp.setProx(novo);
            }
        } else {
            System.out.println("Posição invalida!");
        }
    } //final do metodo inserir

Um comentário: