Imprimer la liste chaînée en Java

Hiten Kanwar 12 octobre 2023
Imprimer la liste chaînée en Java

Une liste chaînée est utilisée pour stocker des éléments appelés nœuds. Les nœuds comprennent deux entités - les données et une référence. La référence pointe vers le nœud suivant. Leur adresse en mémoire ne définit pas l’ordre des éléments d’une liste chaînée.

Le langage de programmation Java nous fournit la classe LinkedList. Cette classe est disponible sous Java’s Collections Framework, qui fournit les fonctionnalités de cette structure de données de liste doublement chaînée.

Dans ce tutoriel, nous allons vous présenter comment imprimer une liste chaînée en Java.

On peut créer un objet liste chaînée à l’aide de la classe LinkedList, ajouter des éléments à l’aide de la fonction add(), et l’afficher.

Voir le code ci-dessous.

import java.util.*;

public class ABC {
  public static void main(String[] args) {
    LinkedList<String> fruits = new LinkedList<>();
    fruits.add("apple");
    fruits.add("orange");
    fruits.add("mango");
    String str = fruits.listIterator(1).previous();
    System.out.println(fruits);
  }
}

Production:

[apple, orange, mango]

On peut aussi utiliser la fonction toString() pour afficher la liste finale sous forme de chaîne. La méthode toString() renvoie les éléments de la liste chaînée dans un format de chaîne séparés par des virgules.

Par exemple,

import java.util.*;

public class ABC {
  public static void main(String[] args) {
    LinkedList<String> fruits = new LinkedList<>();
    fruits.add("apple");
    fruits.add("orange");
    fruits.add("mango");
    String str = fruits.listIterator(1).previous();
    System.out.println(fruits.toString());
  }
}

Production:

[apple, orange, mango]

Cette méthode analyse la liste chaînée du début à la fin et les sépare à l’aide de virgules.

Nous pouvons également créer une classe définie par l’utilisateur pour lancer une liste chaînée et créer les fonctionnalités nécessaires. En travaillant avec une telle classe, nous devrons créer une méthode pour afficher la liste.

Nous devrons remplacer la fonction toString() lors de l’utilisation de cette méthode et la mettre à jour en fonction des besoins de l’utilisateur.

Par exemple,

public class LinkedListNode {
  private int data;
  private LinkedListNode next;
  public LinkedListNode(int data) {
    this.data = data;
    this.next = null;
  }
  public int getData() {
    return data;
  }
  public void setData(int d) {
    data = d;
  }
  public LinkedListNode getNext() {
    return next;
  }
  public void setNext(LinkedListNode n) {
    next = n;
  }
}

public class LinkedList {
  public LinkedListNode head;
  public static void main(String[] args) {
    LinkedList list = new LinkedList();
    list.insertFront(1);
    list.insertFront(2);
    list.insertFront(3);
    System.out.println(list.toString());
  }
  public LinkedList() {
    this.head = null;
  }
  public int removeFront() {
    if (head == null) {
      System.out.println("Empty list");
      return 0;
    } else {
      int temp = head.getData();
      head = head.getNext();
      return temp;
    }
  }
  public void insertFront(int data) {
    if (head == null) {
      head = new LinkedListNode(data);
    } else {
      LinkedListNode newNode = new LinkedListNode(data);
      newNode.setNext(head);
      head = newNode;
    }
  }
  public void insertBack(int data) {
    if (head == null) {
      head = new LinkedListNode(data);
    } else {
      LinkedListNode newNode = new LinkedListNode(data);
      LinkedListNode current = head;
      while (current.getNext() != null) {
        current = current.getNext();
      }
      current.setNext(newNode);
    }
  }

  public int removeBack() {
    if (head == null) {
      System.out.println("Empty list");
      return 0;
    } else if (head.getNext() == null) {
      int temp = head.getData();
      head = null;
      return temp;
    } else {
      LinkedListNode current = head;
      while (current.getNext().getNext() != null) {
        current = current.getNext();
      }
      int temp = current.getNext().getData();
      current.setNext(null);
      return temp;
    }
  }

  public String toString() {
    String result = "";
    LinkedListNode current = head;
    while (current.getNext() != null) {
      result += current.getData();
      if (current.getNext() != null) {
        result += ", ";
      }
      current = current.getNext();
    }
    result += current.getData();
    return "Contents of the List: " + result;
  }

  public LinkedListNode getHead() {
    return head;
  }
}

Production:

Contents of the List: 3, 2, 1

Nous pouvons également imprimer directement la liste requise sans la formater en chaîne. Nous commençons également par le nœud initial, l’affichons, puis passons au nœud suivant.

Voir le code suivant.

public class LinkedListNode {
  private int data;
  private LinkedListNode next;
  public LinkedListNode(int data) {
    this.data = data;
    this.next = null;
  }
  public int getData() {
    return data;
  }
  public void setData(int d) {
    data = d;
  }
  public LinkedListNode getNext() {
    return next;
  }
  public void setNext(LinkedListNode n) {
    next = n;
  }
}

public class LinkedList {
  public LinkedListNode head;
  public static void main(String[] args) {
    LinkedList list = new LinkedList();
    list.insertFront(1);
    list.insertFront(2);
    list.insertFront(3);
    list.display();
  }
  public LinkedList() {
    this.head = null;
  }
  public int removeFront() {
    if (head == null) {
      System.out.println("Empty list");
      return 0;
    } else {
      int temp = head.getData();
      head = head.getNext();
      return temp;
    }
  }
  public void insertFront(int data) {
    if (head == null) {
      head = new LinkedListNode(data);
    } else {
      LinkedListNode newNode = new LinkedListNode(data);
      newNode.setNext(head);
      head = newNode;
    }
  }
  public void insertBack(int data) {
    if (head == null) {
      head = new LinkedListNode(data);
    } else {
      LinkedListNode newNode = new LinkedListNode(data);
      LinkedListNode current = head;
      while (current.getNext() != null) {
        current = current.getNext();
      }
      current.setNext(newNode);
    }
  }

  public int removeBack() {
    if (head == null) {
      System.out.println("Empty list");
      return 0;
    } else if (head.getNext() == null) {
      int temp = head.getData();
      head = null;
      return temp;
    } else {
      LinkedListNode current = head;
      while (current.getNext().getNext() != null) {
        current = current.getNext();
      }
      int temp = current.getNext().getData();
      current.setNext(null);
      return temp;
    }
  }

  public void display() {
    LinkedListNode current = head;
    while (current.getNext() != null) {
      System.out.println(current.getData());
      current = current.getNext();
    }
    System.out.println(current.getData());
  }

  public LinkedListNode getHead() {
    return head;
  }
}

Production:

3
2
1

Article connexe - Java Linked List