English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este ejemplo, aprenderemos a obtener el elemento medio de una lista enlazada en una sola iteración en Java.
Para entender este ejemplo, asegúrate de visitar primero los siguientes tutoriales:
class LinkedList { //Crear un objeto de la clase Node //Representa la cabeza de la lista Node head; //Clase interna estática static class Node { int value; //Conectar cada nodo con el siguiente nodo Node next; Node(int d) { value = d; next = null; } } public static void main(String[] args) { //Crear un objeto LinkedList LinkedList linkedList = new LinkedList(); //asignar valores a cada nodo de la lista linkedList.head = new Node(1); Node second = new Node(2); Node third = new Node(3); //conectar cada nodo de la lista a su nodo siguiente linkedList.head.next = second; second.next = third; //imprimir la lista Node pointer = linkedList.head; System.out.print("LinkedList: " while (pointer != null) { System.out.print(pointer.value + "); pointer = pointer.next; } // encontrar el elemento medio Node ptr1 = linkedList.head; Node ptr2 = linkedList.head; while (ptr1.next != null) { //se dirigirá a ptr1aumentar2,ptr2aumentar1 //si ptr1se dirigirá al último elemento //ptr2se dirijirá al elemento medio ptr1 = ptr1.next; if(ptr1.next != null) { ptr1 = ptr1.next; ptr2 = ptr2.next; } } System.out.println("\nElemento medio: " + ptr2.value); } }
Resultado de salida
LinkedList: 1 2 3 Elemento medio: 2
En el ejemplo anterior, ya hemos implementado la estructura de datos de lista enlazada en Java. Luego, encontramos el elemento medio de la lista en un ciclo. Nota el código,
while (ptr1.next != null) { //se dirigirá a ptr1aumentar2,ptr2aumentar1 //si ptr1se dirigirá al último elemento //ptr2se dirijirá al elemento medio ptr1 = ptr1.next; if(ptr1.next != null) { ptr1 = ptr1.next; ptr2 = ptr2.next; } }
Aquí, tenemos dos variables ptr1y ptr2。 Usamos estas variables para recorrer la lista.
En cada iteración, ptr1visitará dos nodos, mientras que ptr2visitará un nodo de la lista enlazada.
Ahora, cuando ptr1Al llegar al final de la lista enlazada, ptr2Se encuentra en el medio. De esta manera, podemos obtener la posición media de la lista en una sola iteración.
import java.util.LinkedList; class Main { public static void main(String[] args){ //Utilice la clase LinkedList para crear una lista enlazada LinkedList<String> animals = new LinkedList<>(); //Agregar elementos al LinkedList animals.add("Dog"); animals.addFirst("Cat"); animals.addLast("Horse"); System.out.println("LinkedList: " + animals); //Acceder al elemento central String middle = animals.get(animals.size())/2); System.out.println("Elemento central: " + middle); } }
Resultado de salida
LinkedList: [Cat, Dog, Horse] Elemento central: Dog
En el ejemplo anterior, usamos la clase LinkedList para implementar la estructura de datos de lista enlazada. Nota la expresión
animals.get(animals.size())/2)
size()/ 2 - Devolver la posición del elemento central
get() - Devolver el elemento ubicado en el centro