Hola, en escencia PHP no cuenta con el tipo de dato "Apuntador", que permite el manejo de dinamico de estructuras de datos en la memoria del computador.
Sin embargo, dado que PHP no es fuertemente tipeado, otorga una fortaleza y es el poder crear estructuras de datos a traves de clase y hacer referencia a ellas, como si fueran nodos; para el caso de listas, arboles, pilas y colas. (aunqe las pilas normalmente se pueden trabajar con arreglos estaticos, que esta claramente definido y soportado en PHP).
Bueno para no echar mas chachara y mostrar como se hace, anexo un ejemplo basico de la creacion de una lista con tres nodos y luego su recorrido y su impresion. El algoritmo es muy sencillo y tiene como objetivo mostrar como se puede implementar estructuras de datos dinamicas con PHP, mas que la optimizacion o mejoramiento del mismo. Por lo tanto el algoritmo puede ser mejorado y/o adaptado a la necesidad requerida.
Código PHP:
<?
// Definicion de la clase tipo NODO
Class Nodo
{
public $Dato;
public $Proximo;
function __construct($Dato)
{
$this->Dato = $Dato;
}
}
//Creacion del nodo cabeza de la lista con el dato 1
$cabeza = new Nodo(1);
//Creacion de un segundo nodo con el dato 2
$aux = new Nodo(2);
//Enlazar el campo proximo del nodo cabeza, con el nuevo nodo creado, apuntado por aux
$cabeza->Proximo = $aux;
// creacion de un tercer nodo con el dato 3
$aux = new Nodo(3);
//Enlazar el segundo nodo con el primero, esto puede mejorar claro
$cabeza->Proximo->Proximo = $aux;
//Asignar el valor null, al ultimo nodo, para identificar el final de la lista
$aux->Proximo = 'null';
// Llevo la direccion de la cabeza de la lista a una variable apuntador "aux"
$aux = $cabeza;
// Recorrer la lista mientras que al apuntador aux sea diferente de "null"
while ( $aux != 'null' )
{
//Imprimir el dato contenido en el nodo apuntado por "aux"
echo $aux->Dato, "<br />\n";
//Pasar al siguiente nodo de la lista
$aux = $aux->Proximo;
}
?>
Espero el codigo les sea de utilidad, para implementar, otro tipo de algoritmos.
Saludos,
Ayax Alvarez