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.
Algoritmo:
- 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).
- Cree otra clase para crear la lista enlazada circular y tiene dos Nodes, a saber, cabeza y cola.
- 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.
- 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(); } }
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