English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de Java

Control de flujo Java

Java array

Java orientado a objetos (I)

Java orientado a objetos (II)

Java orientado a objetos (III)

Manejo de excepciones en Java

Java lista (List)

Java cola (cola)

Java conjuntos Map

Java conjuntos Set

Java entrada/salida (I/O)

Java Reader/Writer

Otras temáticas de Java

Java programa para obtener el elemento medio de LinkedList en una sola iteración

   Java Ejemplos completos

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:

Ejemplo1Obtener el elemento medio de LinkedList en una sola iteración

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.

Ejemplo2:Utilice LinkedList para obtener el elemento medio de LinkedList

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

Java Ejemplos completos