Eliminar un nodo de una lista vinculada en Java

Sheeraz Gul 12 octubre 2023
Eliminar un nodo de una lista vinculada en Java

Este tutorial demuestra cómo eliminar un nodo de una lista vinculada en Java.

Eliminar un nodo de una lista vinculada en Java

La lista enlazada es un tipo de estructura de datos del paquete util de Java que implementa la estructura de datos de la lista enlazada. La lista enlazada se considera una estructura de datos lineal en la que cada elemento es un objeto separado con una dirección y una parte de datos, y ningún elemento se almacena en la ubicación contagiosa.

Se puede eliminar un nodo de una lista vinculada siguiendo el proceso en el que eliminaremos la primera aparición de la clave dada.

Estos son los pasos para eliminar un nodo de una lista vinculada:

  • Primero, debemos encontrar un nodo anterior al nodo dado. Esto significa encontrar el nodo antes de que se elimine.
  • El siguiente paso es cambiar el texto del nodo anterior.
  • Finalmente, necesitamos liberar la memoria para el nodo eliminable.

Este es un proceso iterativo en el que cada nodo se asigna dinámicamente utilizando el método malloc() de C, por lo que debemos llamar al método free() para liberar la memoria cada vez.

Probemos un ejemplo para eliminar un nodo de la lista Vinculada dada en Java:

package delftstack;

public class Example {
  class DemoNode {
    int NodeData;
    DemoNode NextNode;

    public DemoNode(int NodeData) {
      this.NodeData = NodeData;
      this.NextNode = null;
    }
  }

  // head and tail node
  public DemoNode HeadNode = null;
  public DemoNode TailNode = null;

  // to add new nodes
  public void Add_Node(int NodeData) {
    DemoNode NewNode = new DemoNode(NodeData);
    if (HeadNode == null) {
      HeadNode = NewNode;
      TailNode = NewNode;
    } else {
      TailNode.NextNode = NewNode;
      TailNode = NewNode;
    }
  }

  // To delete nodes
  public void DeleteNode() {
    if (HeadNode == null) {
      System.out.println("List is empty");
      return;
    } else {
      // Checks if the list contains only one element
      if (HeadNode != TailNode) {
        DemoNode current = HeadNode;
        // Iterate through the list till the second last element
        while (current.NextNode != TailNode) {
          current = current.NextNode;
        }
        TailNode = current;
        TailNode.NextNode = null;
      } else {
        HeadNode = TailNode = null;
      }
    }
  }

  // To display the node
  public void DisplayNode() {
    DemoNode CurrentNode = HeadNode;
    if (HeadNode == null) {
      System.out.println("List is empty");
      return;
    }
    while (CurrentNode != null) {
      System.out.print(CurrentNode.NodeData + " ");
      CurrentNode = CurrentNode.NextNode;
    }
    System.out.println();
  }

  public static void main(String[] args) {
    Example Linked_List = new Example();

    // Adds nodes to the list
    Linked_List.Add_Node(1);
    Linked_List.Add_Node(2);
    Linked_List.Add_Node(3);
    Linked_List.Add_Node(4);

    System.out.println("The Original List is: ");
    Linked_List.DisplayNode();

    while (Linked_List.HeadNode != null) {
      Linked_List.DeleteNode();

      System.out.println("The list after Deleting a Node: ");
      Linked_List.DisplayNode();
    }
  }
}

El código anterior primero agregará los nodos a la lista vinculada y luego eliminará el nodo del final de la lista. Ver la salida:

The Original List is:
1 2 3 4
The list after Deleting a Node:
1 2 3
The list after Deleting a Node:
1 2
The list after Deleting a Node:
1
The list after Deleting a Node:
List is empty
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Artículo relacionado - Java Linked List