En este artículo, aprenderemos a eliminar un Node del final de una lista enlazada circular . Considere la lista enlazada como se muestra a continuación:
Ejemplo:
Input : 5->3->4->(head node) Output: 5->3->(head node)
Primero inicializaremos la lista y agregaremos algunos datos con el método addNode() y luego procederemos de acuerdo con los siguientes enfoques:
Caso 1 : la lista está vacía.
Si la lista está vacía simplemente regresaremos.
Caso 2 : la lista no está vacía
- Eliminar():
- Regresa de la función si no hay ningún Node presente
- Establece la cabeza y la cola en nulo si solo hay un Node
- si tiene más de un Node, elimina el Node principal anterior, la cabeza apuntará al siguiente Node en la lista y la cola apuntará al nuevo encabezado.
- printNode() imprimirá todos los Nodes presentes en la lista como:
- Se define la corriente del Node que apuntará a la cabeza
- Imprima current.val hasta que comience a apuntar a la cabeza nuevamente
- En cada iteración, apuntará al siguiente Node.
Código :
Java
// Java Program to Delete a Node From the Ending of the // Circular Linked List public class Main { // Represents the node of list. public class Node { int val; Node next; public Node(int val) { this.val = val; } } // Initialising head and tail pointers public Node head = null; public Node tail = null; // add new node to the end public void addNode(int val) { // Creating new node Node node = new Node(val); // head and tail will point to new node // if list is empty if (head == null) { head = node; tail = node; node.next = head; } // otherwise tail point to new node and else { tail.next = node; tail = node; tail.next = head; } } // Deletes node from the beginning of the list public void delete() { // returns if list is empty if (head == null) { return; } // otherwise head will point to next element in the // list and tail will point to new head else { // if list contains more than one element // then loop will iterate // till second last element // is pointing to tail if (head != tail) { Node current = head; while (current.next != tail) { current = current.next; } // Second last element is the new tail tail = current; tail.next = head; } // if the list contains only one element // then both head and tail will point to null else { head = tail = null; } } } // displaying the nodes public void printNode() { Node current = head; if (head == null) { System.out.println("List is empty"); } else { do { System.out.print(" " + current.val); current = current.next; } while (current != head); System.out.println(); } } public static void main(String[] args) { Main list = new Main(); // Adds data to the list list.addNode(5); list.addNode(3); list.addNode(4); // Printing original list System.out.println("Original List: "); list.printNode(); // deleting node from ending // till the list is empty and // displaying the Updated list while (list.head != null) { list.delete(); // Printing updated list System.out.println("Updated List: "); list.printNode(); } } }
Producción
Original List: 5 3 4 Updated List: 5 3 Updated List: 5 Updated List: List is empty