Olá a todos peço dicas de como implementar uma lista encadeada em java usando genéricos. Minha principal dificuldade está em usar os genéricos neste problema, por isto peço uma dica principalmente nesta parte.
Obrigados a todos.
Olá a todos peço dicas de como implementar uma lista encadeada em java usando genéricos. Minha principal dificuldade está em usar os genéricos neste problema, por isto peço uma dica principalmente nesta parte.
Obrigados a todos.
class No <T>{
Object elemento;
No<T> prox;
No(T elem) {
elemento = elem;
prox = null;
}
}
public class ListaLigada <T> {
private No<T> primeiro, ultimo;
private int nroNos;
ListaLigada() {
primeiro = null;
ultimo = null;
nroNos = 0;
}
public boolean isVazia() {
return (primeiro == null && ultimo == null);
}
public void addInicio(T o) {
nroNos++;
No<T> novoNo = new No<T>(o);
if (isVazia())
ultimo = novoNo;
else
novoNo.prox = primeiro;
primeiro = novoNo;
}
public void addFinal(T o) {
nroNos++;
No<T> novoNo = new No<T>(o);
if (isVazia())
primeiro = novoNo;
else
ultimo.prox = novoNo;
ultimo = novoNo;
}
public int getNroNos() {
return nroNos;
}
/*
* @param posicao posição contada a partir do zero como primeiro elemento
*/
public void addMeio(T o, int posicao) {
nroNos++;
No<T> novoNo = new No<T>(o);
if (posicao <= 1) {
addInicio(o);
return;
}
if (posicao > nroNos) { // Outra abordagem seria lançar exceção para
// posição inválida (>nroNos+1)
addFinal(o);
return;
}
No<T> noTemp = primeiro.prox;
posicao--;
for (int posAux = 1; posAux < posicao; posAux++)
noTemp = noTemp.prox;
novoNo.prox = noTemp.prox;
noTemp.prox = novoNo;
}
public void Remover(T elemento) {
No<T> noTemp = primeiro;
No<T> noAnt = null;
if (primeiro.elemento.equals(elemento)) {
primeiro = primeiro.prox;
nroNos--;
} else {
while (noTemp != null && !noTemp.elemento.equals(elemento)) {
noAnt = noTemp;
noTemp = noTemp.prox;
}
if (noTemp != null) {
noAnt.prox = noTemp.prox;
nroNos--;
}
if (noTemp == ultimo) {
ultimo = noAnt;
}
}
}
public Object BuscarElemento(T elemento) {
int i = 1;
No<T> noTemp = primeiro;
while (noTemp != null) {
if (noTemp.elemento.equals(elemento)) {
return noTemp;
}
i = i + 1;
noTemp = noTemp.prox;
}
return null;
}
}
Obs: não sei se funciona não fiz testes só copiei e adicionei os genéricos
Até!