Verificar se um valor está presente em uma lista ligada com cauda (tail) é um processo bastante simples.
Ele consiste em percorrer a lista a partir de seu nó inicial utilizando um laço do tipo while, e verificando se o valor é o mesmo de algum dos nós da lista.
Caso o valor seja igual, retornamos true, e ao fim do processamento caso o valor não esteja presente, retornamos false.
Veja a seguir primeiramente a classe da lista ligada, e na sequência implementaremos o método para verificar se o valor está presente na lista.
public class ListaLigadaCauda<T> {
private Node<T> inicio;
private Node<T> fim;
private int tamanho;
public ListaLigadaCauda() {
inicio = null;
fim = null;
tamanho = 0;
}
public int getTamanho() {
return tamanho;
}
public Node getInicio() {
return inicio;
}
public Node getFim() {
return fim;
}
}
Com a classe da lista ligada com cauda definida, vamos implementar o método para vericar a existencia do valor nela, conforme o código a seguir:
public boolean valorPresente(T valor) {
// obtém a referência do nó inicial
Node<T> node = inicio;
// percorre a lista a partir do nó inicial até seu final (proximo == null)
while (node != null) {
// caso o valor procurado seja o mesmo do nó corrente,
// retorna true
if (node.getValor() == valor) {
return true;
}
// move para o próximo nó
node = node.getProximo();
}
// retorna false pois o valor não está presente
return false;
}
Com o código da verificação implementado, veja como a classe da lista ligada com cauda fica com o método adicionada a ele, conforme o código a seguir:
public class ListaLigadaCauda<T> {
private Node<T> inicio;
private Node<T> fim;
private int tamanho;
public ListaLigadaCauda() {
inicio = null;
fim = null;
tamanho = 0;
}
public int getTamanho() {
return tamanho;
}
public Node getInicio() {
return inicio;
}
public Node getFim() {
return fim;
}
public boolean valorPresente(T valor) {
Node<T> node = inicio;
while (node != null) {
if (node.getValor() == valor) {
return true;
}
node = node.getProximo();
}
return false;
}
}
Com isso terminamos a implementação do método para verificar se um valor existe na lista ligada com cauda, que é o mesmo da lista ligada uma vez que não temos a necessidade de fazer o uso do nó extra fim para isso.