Programa Java para insertar un nuevo Node al comienzo de la lista circular enlazada

Lista enlazada circular: una lista enlazada circular es una secuencia de elementos en la que cada elemento apunta a su siguiente elemento en la secuencia y el último elemento tiene un enlace al primer elemento. Eso significa que una lista enlazada circular es similar a la lista enlazada única, excepto que el último Node apunta al primer Node de la lista.

Insertar un nuevo Node al principio de la lista enlazada circular:

Si la lista vinculada está vacía, tanto la cabeza como la cola apuntarán al Node recién agregado. Si la lista no está vacía, apuntaremos el último Node al Node recién agregado y apuntaremos el Node recién agregado al Node principal y, finalmente, convertiremos el Node recién agregado en el Node principal.

Add Node 0 at the beginningAdded Node 0 at the beginning

Algoritmo: 

  1. Cree una clase de Node que represente un Node en la lista. Tiene dos datos de variables y el siguiente puntero (que apunta al siguiente Node).
  2. Cree otra clase para crear la lista enlazada circular y tiene dos Nodes, a saber, cabeza y cola.
  3. Al agregar un nuevo Node a la lista, primero verificaremos si el encabezado es nulo. Si la lista está vacía o la cabeza es nula, insertaremos el Node como la cabeza y la cola también apunta al Node recién agregado.
  4. Si la lista no está vacía, el Node recién agregado apuntará a la cabeza, y la cola apuntará a un Node recién agregado y se creará un nuevo Node como el Node principal.

Fragmento de código :

Java

// Java Program to Insert a nodes at the Beginning of the
// Circular Linked List
  
public class AddAtBeginning {
  
    // Represents the node of list.
    public class Node {
        char data;
        Node next;
        public Node(char data) { this.data = data; }
    }
  
    // Declaring head and tail pointer as null.
    // head indicates the starting node and tail indicates
    // last node.
    public Node head = null;
    public Node tail = null;
  
    // This function will add the new node at the Beginning
    // of the circular linked list.
    public void addNode(char data)
    {
        // Create new node
        Node newNode = new Node(data);
  
        // Checks if the list is empty.
        if (head == null) {
  
            // make newnode as both head and tail node.
            head = newNode;
            tail = newNode;
  
            // point the tail to head node.
            tail.next = head;
        }
        else {
  
            // point the newnode to head
            newNode.next = head;
  
            // point the rail to new node.
            tail.next = newNode;
  
            // make the newnode as head.
            head = newNode;
        }
    }
  
    // printLinkedList prints all the nodes in the list
    public void printLinkedList()
    {
        Node presentNode = head;
        if (head == null) {
            System.out.println("List is empty");
        }
        else {
            System.out.println("\n");
  
            // here with out checking anything we will print
            // the first node, And print the rest of the
            // nodes till the pointer again reaches the head
            // node.
            do {
                System.out.print(" " + presentNode.data);
  
                // incrementing the nodes using next
                // property.
                presentNode = presentNode.next;
  
                // if present node is head, stop printing
                // the nodes.
            } while (presentNode != head);
        }
    }
  
    public static void main(String[] args)
    {
        AddAtBeginning obj = new AddAtBeginning();
  
        System.out.println(
            "Adding nodes at the beginning of the list: ");
        obj.addNode('s');
        obj.printLinkedList();
  
        // add k at the beginning
        obj.addNode('k');
        obj.printLinkedList();
  
        // add e at the beginning
        obj.addNode('e');
        obj.printLinkedList();
  
        // add e at the beginning
        obj.addNode('e');
        obj.printLinkedList();
  
        // add G at the beginning
        obj.addNode('G');
        obj.printLinkedList();
    }
}
Producción

Adding nodes at the beginning of the list: 


 s

 k s

 e k s

 e e k s

 G e e k s

Complejidad de tiempo: O(1)

Publicación traducida automáticamente

Artículo escrito por pulamolusaimohan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *