| 
<?php
/******************************************************************************
 *       BBBB         AAA    RRRR    BBBB      AAA    ZZZZZZ  U     U  L           *
 *       B   B    A    A    R    R   B   B     A   A       ZZ  U     U  L           *
 *       B   B   A     A  R    R   B   B    A      A        ZZ   U     U  L           *
 *       BBBB       A     A  RRRR    BBBB    A     A     Z    U     U  L           *
 *       B   B   AAAAAAA  R  R    B   B   AAAAAAA    Z     U     U  L           *
 *     B    B  A     A  R   R   B    B  A     A   ZZ     U     U  L           *
 *     B    B  A     A  R    R  B    B  A     A  ZZ       U   U   L           *
 *     BBBBB   A     A  R    R  BBBBB   A     A  ZZZZZZ    UUU    LLLLLLL     *
 ******************************************************************************/
 
 /* Ejemplo de utilización de Lista Genérica en múltiples niveles
 * Descripción: En este ejemplo se muestra el uso de una lista encadenada
 * utilizando datos de tipo Objeto.
 * Autor: Matías Montes
 * Versión : 2.0
 */
 
 /******************************************************************************/
 /* Librerías y definiciones requeridas */
 /*-------------------------------------*/
 
 require_once("class.Lista.php");
 
 if( !defined("MAX") ) define("MAX", 10);
 
 
 class Nivel1
 {
 var $clave;
 var $sublista;
 
 function Nivel1($clave)
 {
 $this->clave = $clave;
 $this->sublista = new Lista("CompararNivel2");
 }
 }
 
 function CompararNivel1($DatoEnteroIzq , $DatoEnteroDer)
 {
 $resultado = IGUAL;
 
 if ( ($DatoEnteroIzq->clave) == ($DatoEnteroDer->clave) ) $resultado = IGUAL;
 if ( ($DatoEnteroIzq->clave) >  ($DatoEnteroDer->clave) ) $resultado = MAYOR;
 if ( ($DatoEnteroIzq->clave) <  ($DatoEnteroDer->clave) ) $resultado = MENOR;
 
 return resultado;
 }
 
 function CompararNivel2($DatoEnteroIzq , $DatoEnteroDer)
 {
 
 $resultado = IGUAL;
 
 if ( ($DatoEnteroIzq) == ($DatoEnteroDer) ) $resultado = IGUAL;
 if ( ($DatoEnteroIzq) >  ($DatoEnteroDer) ) $resultado = MAYOR;
 if ( ($DatoEnteroIzq) <  ($DatoEnteroDer) ) $resultado = MENOR;
 
 return $resultado;
 }
 
 /******************************************************************************/
 /* Programa Principal */
 /*--------------------*/
 
 //Instancio la lista de Nivel 1
 $L = new Lista("CompararNivel1");
 
 //Cargo la lista en 2 niveles
 for( $i=0 ; $i<MAX ; $i++ )
 {
 $datoN1 = new Nivel1($i);
 for( $j=1 ; $j<MAX ; $j++ )
 {
 $datoN2 = $j + $i * MAX;
 $datoN1->sublista->insertarDato($datoN2);
 }
 $L->insertarDato($datoN1);
 }
 
 //Imprime el contenido de la lista
 $cursor1 = $L->primero();
 
 echo "<UL>\n";
 while( $cursor1!=$L->fin() )
 {
 $datoN1 = $L->getDato($cursor1);
 echo "  <LI>".$datoN1->clave."\n";
 echo "    <UL>\n";
 
 $cursor2 = $datoN1->sublista->primero();
 while( $cursor2!=$datoN1->sublista->fin() )
 {
 $datoN2 = $datoN1->sublista->getDato($cursor2);
 echo "      <LI>".$datoN2."</LI> \n";
 $cursor2 =& $datoN1->sublista->siguiente($cursor2);
 }
 
 echo "    </UL>\n";
 echo "  </LI>\n";
 
 $cursor1 =& $L->siguiente($cursor1);
 }
 echo "</UL>\n";
 
 //Destruyo la lista
 $L->destruir();
 ?>
 |