Se possivel demostrar graficamente os metodos :-)
/**
*
*
* @author joao andré martins
* jamdes@hotmail.com
*/
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;
}
}
/**
*
* @author joao andré martins
* jamdes@hotmail.com
*/
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();
}
}
//--------------------------------------------------------------------------
}
Para escrever sua resposta aqui, entre ou crie uma conta
Algoritmos e Estrutura de Dados II
•PUC-MINAS
Algoritmos e Programação de Computadores
Compartilhar