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

Tutoriel de base Java

Java flow control

Java array

Java object-oriented (I)

Java object-oriented (II)

Java object-oriented (III)

Gestion des exceptions Java

Java List

Java Queue (queue)

Java Map collection

Java Set collection

Java Input Output (I/O)

Java Reader/Writer

Java other topics

Java program to get the middle element of LinkedList in one iteration

   Java complete list of examples

In this example, we will learn how to get the middle element of a linked list in Java in one iteration.

To understand this example, make sure you first visit the following tutorial,

Exemple1Get the middle element of LinkedList by one iteration

class LinkedList {
  //Create an object of the Node class
  //Represents the head of the list
  Node head;
  //Static inner class
  static class Node {
    int value;
    //Connect each node to the next node
    Node next;
    Node(int d) {
      value = d;
      next = null;
    }
  }
  public static void main(String[] args) {
    //Créer un objet LinkedList
    LinkedList linkedList = new LinkedList();
    //Assigner des valeurs à chaque noeud de la liste chaînée
    linkedList.head = new Node(1);
    Node second = new Node(2);
    Node third = new Node(3);
    //Connecter chaque noeud de la liste chaînée au noeud suivant
    linkedList.head.next = second;
    second.next = third;
    //Imprimer la liste chaînée
    Node pointer = linkedList.head;
    System.out.print("LinkedList : "
    while (pointer != null) {
      System.out.print(pointer.value + ");
      pointer = pointer.next;
    }
    // Trouver l'élément moyen
    Node ptr1 = linkedList.head;
    Node ptr2 = linkedList.head;
    while (ptr1.next != null) {
      //ptr1Augmente2,ptr2Augmente1
      //Si ptr1Pointe vers l'élément final
      //ptr2Pointe vers l'élément moyen
      ptr1 = ptr1.next;
      if(ptr1.next != null) {
        ptr1 = ptr1.next;
        ptr2 = ptr2.next;
      }
    }
    System.out.println("\nÉlément moyen : " + ptr2.value);
  }
}

Output result

LinkedList : 1 2 3 
Élément moyen : 2

Dans cet exemple, nous avons implémenté la structure de données de liste chaînée en Java. Ensuite, nous avons trouvé l'élément moyen de la liste chaînée dans une boucle. Notez le code,

    while (ptr1.next != null) {
      //ptr1Augmente2,ptr2Augmente1
      //Si ptr1Pointe vers l'élément final
      //ptr2Pointe vers l'élément moyen
      ptr1 = ptr1.next;
      if(ptr1.next != null) {
        ptr1 = ptr1.next;
        ptr2 = ptr2.next;
      }
    }

Ici, nous avons deux variables ptr1et ptr2。 Nous utilisons ces variables pour parcourir la liste chaînée.

Dans chaque itération, ptr1Accède à deux noeuds, tandis que ptr2Accède à un seul noeud de la liste chaînée.

Maintenant, lorsque ptr1Lorsque ptr atteint la fin de la liste chaînée,2Se trouve au milieu. De cette manière, nous pouvons obtenir la position moyenne de la liste chaînée en une seule itération.

Exemple2:Obtenir l'élément moyen de LinkedList en utilisant la classe LinkedList

import java.util.LinkedList;
class Main {
  public static void main(String[] args){
    //Création de la liste chaînée en utilisant la classe LinkedList
    LinkedList<String> animals = new LinkedList<>();
    //Add elements to LinkedList
    animals.add("Dog");
    animals.addFirst("Cat");
    animals.addLast("Horse");
    System.out.println("LinkedList:  ") + animals)
    //Access the middle element
    String middle = animals.get(animals.size())/2);
    System.out.println("Middle element:  ") + middle);
    }
}

Output result

LinkedList:  [Cat,  Dog,  Horse]
Middle element:  Dog

In the above example, we used the LinkedList class to implement the linked list data structure. Note the expression

animals.get(animals.size())/2)
  • size()/ 2 - Return the position of the middle element

  • get() - Return the element at the middle position

Java complete list of examples