Listas Enlazadas — Método indiceDe

🔢 Implementemos el método indiceDe()

Vamos a implementar el método indiceDe().
Su objetivo será encontrar la posición (índice) de un valor dentro de la lista.

public int indiceDe(int item) {
    // Paso 1: recorrer la lista desde el principio
}

🧭 Recorrer la lista

Necesitamos recorrer la lista desde el primer nodo hasta el final.

public int indiceDe(int item) {
    var actual = primero;
    int indice = 0;
}

actual nos servirá para movernos nodo por nodo.

indice llevará la cuenta de la posición en la lista.

🔁 Bucle para recorrer la lista

Usamos un ciclo while para avanzar mientras no lleguemos al final (null).

public int indiceDe(int item) {
    var actual = primero;
    int indice = 0;

    while (actual != null) {
        if (actual.value == item)
            return indice;

        actual = actual.next;
        indice++;
    }
    return -1;
}

🧩 Lógica completa

  • 1️⃣ Empezamos desde primero.

  • 2️⃣ Comparamos el valor de cada nodo con item.

  • 3️⃣ Si lo encontramos, devolvemos su índice.

  • 4️⃣ Si llegamos al final sin hallarlo → devolvemos -1.

📊 Visualización — Lista inicial

10
➡️
20
➡️
30

➡️ null

primero → 🟨10
    último → 🟩30

Queremos buscar el índice de 30 🔍

🔍 Paso 1 — Inicio de búsqueda

10
➡️
20
➡️
30

➡️ null

actual → 🟨10
    índice = 0

Comparando 10 == 30 ❌ No coincide. Avanzamos al siguiente nodo.

🔍 Paso 2 — Siguiente nodo

10
➡️
20
➡️
30

➡️ null

actual → 🟦20
    índice = 1

Comparando 20 == 30 ❌ No coincide. Seguimos recorriendo.

🔍 Paso 3 — Nodo encontrado

10
➡️
20
➡️
30

➡️ null

actual → 🟩30 ✅
    índice = 2

🎯 Coincidencia encontrada. Devolvemos 2.

🧩 Resultado final

public class Main {
    public static void main(String[] args) {
        var list = new ListaEnlazada();
        list.agregarAlFinal(10);
        list.agregarAlFinal(20);
        list.agregarAlFinal(30);
        System.out.println(list.indiceDe(30));
    }
}

✅ Funciona perfectamente:

  • 10 está en el índice 0.
  • 30 en el índice 2.
  • 99 no existe → devuelve -1.

✨ Resumen

✔️ Recorre la lista nodo por nodo. ✔️ Devuelve el índice del primer valor coincidente. ✔️ Si no existe → -1. ✔️ Es la base para implementar el método contiene() 💡