SplDoublyLinkedList en PHP

Una lista doblemente enlazada es una lista que contiene enlaces a los Nodes anterior y siguiente. Una lista doblemente enlazada (DLL) contiene un puntero adicional, normalmente llamado puntero anterior, junto con el siguiente puntero y los datos que están allí en una lista enlazada individualmente. A diferencia de las listas enlazadas individualmente donde el recorrido es solo de una manera, las listas doblemente enlazadas permiten recorridos en ambos sentidos.

Los siguientes son los términos importantes para entender el concepto de lista doblemente enlazada:

  • Enlace : Cada Node de una lista enlazada puede almacenar un puntero a otro elemento llamado Enlace .
  • Siguiente : Cada Node de una lista enlazada contiene un enlace al siguiente Node llamado Siguiente .
  • Prev : Cada Node de una lista enlazada contiene un enlace al Node anterior llamado Prev .

Puede consultar el artículo sobre Lista doblemente enlazada (Introducción) para comprender la lista doblemente enlazada en detalle.

La clase SplDoublyLinkedList es una clase de biblioteca PHP que proporciona las principales funcionalidades de una lista doblemente enlazada en PHP.

A continuación se muestran algunas de las funciones básicas de la clase SplDoublyLinkedList:

  • push(): esta función se utiliza para insertar un nuevo Node al final de una lista doblemente enlazada.
    Sintaxis :
    list_name.push(value);
    

    Esto empujará el valor al final de la lista list_name .

  • pop(): esta función se utiliza para eliminar un Node del final de la lista doblemente vinculada.
    Sintaxis :
    list_name.pop()
    

    Esto eliminará el último Node de la lista list_name .

  • top(): esta función se utiliza para elegir el Node al final de la lista doblemente enlazada.
    Sintaxis :
    list_name.top()
    

    Esto devolverá el último Node de la lista list_name .

  • bottom(): esta función se utiliza para elegir el Node al principio de la lista doblemente enlazada.
    Sintaxis :
    list_name.bottom()
    

    Esto devolverá el Node presente al principio de la lista list_name .

  • add(): esta función se usa para insertar un nuevo valor en un índice específico en una lista doblemente vinculada, esto también provoca la barajada del valor anterior en ese índice (y todos los valores posteriores) a través de la lista.
    Sintaxis :
    list_name.add('index', "value");
    

    Esto agregará el valor en el índice de posición en la lista list_name .

  • count(): esta función se utiliza para contar la cantidad de elementos presentes en una lista doblemente vinculada.
    Sintaxis :
    list.count()
    

    Esto devolverá el recuento del número total de elementos presentes en la lista list_name .

El siguiente programa ilustra las funciones anteriores para crear y usar una lista doblemente enlazada:
Programa:

<?php
// Program to implement basic PHP functions
// for doubly linked list
  
// Instantiating an object of class SplDoublyLinkedList
$dlist = new SplDoublyLinkedList();
  
// Inserting elements at the end of the list
$dlist->push('geeks');
$dlist->push('for');
$dlist->push('practice');
  
// Displaying the list
echo "Original List : ";
for ($dlist->rewind(); $dlist->valid(); $dlist->next()) {
    echo $dlist->current()." ";
}
  
// Deleting element from the end of the list
$dlist->pop();
  
// Adding a new element at specific index
// Add 'code' at index 2
$dlist->add(2, "code");
  
// Displaying the updated list
echo "\n\nUpdated List : ";
for ($dlist->rewind(); $dlist->valid(); $dlist->next()) {
    echo $dlist->current()." ";
}
  
// Printing the count of nodes
echo "\n\nCount = " . $dlist->count() . "\n";
  
// Printing the node at top of the list
echo "Top = ". $dlist->top() . "\n";
  
// Printing the node at bottom of the list
echo "Bottom = " . $dlist->bottom() . "\n";
  
?>

Producción:

Original List : geeks for practice 

Updated List: geeks for code 

Count = 3
Top = code
Bottom = geeks

Publicación traducida automáticamente

Artículo escrito por Abhinav96 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 *