Buscar

Lista Duplamente encadeada Em Java ( Insere(Ini,Fim), Exclui,Busca(Exaus. e Sentinela) Ordena Shake,Bubble,Inserção Direta

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

ListaDE.java
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package listade;
/**
 *
 * @author joao
 */
public class ListaDE {
 private No ini;
 private No fim;
 public ListaDE() {
 this.ini = null;
 this.fim = null;
 }
 //--------------------------------------------------------------------------
 public void init() {
 this.ini = null;
 this.fim = null;
 }
 //--------------------------------------------------------------------------
 public void insereFinal(int num) {
 if (ini == null) {
 ini = fim = new No(num);
 } else {
 fim.setProx(new No(num));
 fim.getProx().setAnt(fim);
 fim = fim.getProx();
 }
 }
 //--------------------------------------------------------------------------
 public void push(int num) {
 if (ini == null) {
 ini = fim = new No(num);
 } else {
 ini.setAnt(new No(num));
 ini.getAnt().setProx(ini);
 ini = ini.getAnt();
 }
 }
 //--------------------------------------------------------------------------
 public No buscaExaustiva(int chave) {
 No aux = ini;
 while (aux != null && aux.getInfo() != chave) {
 aux = aux.getProx();
 }
 return aux;
 }
 //--------------------------------------------------------------------------
 private No buscaSentinela(int chave) {
 insereFinal(chave);
 No aux = ini;
 while (aux.getInfo() != chave) {
 aux = aux.getProx();
 }
 return (aux.getProx() != null) ? aux : null;
 }
 //--------------------------------------------------------------------------
 public No buscaExaustivaS(int chave) {
 No aux = buscaSentinela(chave);
 fim = fim.getAnt();
 fim.setProx(null);
 return aux;
 }
 //--------------------------------------------------------------------------
 public void remove(int info) {
 No aux = buscaExaustivaS(info);
 if (aux != null) {
 if (ini == fim) {
 init();
 } else if (aux == ini) {
 ini = ini.getProx();
 ini.setAnt(null);
 } else if (aux == fim) {
 fim = aux.getAnt();
 fim.setProx(null);
 } else {
 aux.getAnt().setProx(aux.getProx());
 aux.getProx().setAnt(aux.getAnt());
 }
 }
 }
 //--------------------------------------------------------------------------
 public void insercaoDireta() {
 No pos, i = ini.getProx();
 int aux;
 while (i != null) {
 aux = i.getInfo();
 pos = i;
 while (pos.getAnt() != null && aux < pos.getAnt().getInfo()) {
 pos.setInfo(pos.getAnt().getInfo());
 pos = pos.getAnt();
 }
 pos.setInfo(aux);
 i = i.getProx();
 }
 }
 //--------------------------------------------------------------------------
 public void selecaoDireta() {
 int menor;
 No i = ini, j;
 while (i.getProx() != null) {
 menor = i.getInfo();
 j = i.getProx();
 while (j != null) {
 if (j.getInfo() < menor) {
 menor = j.getInfo();
 }
 j.setInfo(i.getInfo());
 i.setInfo(menor);
 j = j.getProx();
 }
 i = i.getProx();
 }
 }
 //--------------------------------------------------------------------------
 public void bubbleSort() {
 No i = ini, tl2 = fim;
 int aux;
 while (tl2 != null) {
 while (i.getProx() != null) {
 if (i.getInfo() > i.getProx().getInfo()) {
 aux = i.getInfo();
 i.setInfo(i.getProx().getInfo());
 i.getProx().setInfo(aux);
 }
 i = i.getProx();
 }
 i = ini;
 tl2 = tl2.getAnt();
 }
 }
 //--------------------------------------------------------------------------
 public void shakeSort() {
 No tl2 = fim, inicio = ini, i = inicio;
 int aux;
 while (tl2 != inicio) {
 i = inicio;
 while (i != tl2) {
 if (i.getInfo() > i.getProx().getInfo()) {
 aux = i.getInfo();
 i.setInfo(i.getProx().getInfo());
 i.getProx().setInfo(aux);
 }
 i = i.getProx();
 }
 tl2 = tl2.getAnt();
 i = tl2;
 while (i != inicio) {
 if (i.getInfo() < i.getAnt().getInfo()) {
 aux = i.getInfo();
 i.setInfo(i.getAnt().getInfo());
 i.getAnt().setInfo(aux);
 }
 i = i.getAnt();
 }
 inicio = inicio.getProx();
 }
 }
 //--------------------------------------------------------------------------
 public void exibe() {
 No aux = ini;
 while (aux != null) {
 System.out.print(aux.getInfo() + ",");
 aux = aux.getProx();
 }
 }
 //--------------------------------------------------------------------------
}
No.java
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package listade;
/**
 *
 * @author joao
 */
public class No {
 private int info;
 private No ant;
 private No prox;
 public No() {
 this.ant = null;
 this.prox = null;
 }
 public No(int info) {
 this.info = info;
 this.ant = null;
 this.prox = null;
 }
 public int getInfo() {
 return info;
 }
 public void setInfo(int info) {
 this.info = info;
 }
 public No getAnt() {
 return ant;
 }
 public void setAnt(No ant) {
 this.ant = ant;
 }
 public No getProx() {
 return prox;
 }
 public void setProx(No prox) {
 this.prox = prox;
 }
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais