Professional Documents
Culture Documents
Estructura de Datos
Instituto IACC
16/12/2017
Desarrollo
Antes debo aclarar que la materia de esta semana dio un giro de 90 grados en dificultad.
Afortunadamente encontré un ejercicio casi igual al solicitado pero no era cosa de copiar y pegar
o copiar las instrucciones ahí mostradas, tuve que analizar cada línea, en especial por el uso de
clases, ya que cuando en un ramo anterior vimos algo de PHP, no se vio este tema por lo que el
tiempo empleado a tratar de aprender clases con sus métodos y atributos fue mucho más del
tempo máximo que había empleado en algún otro ramo. Me fue muy difícil poder finalizar este
control (el material entregado no me fue suficiente), pero comprendí, por lo menos a medias, el
funcionamiento de las famosas clases y objetos. El programa original estaba con el ingreso de los
datos ordenados en forma manual, se le agrego una sentencia que selecciona los pares e impares
Primero se debe crear la clase con las variables que contiene el elemento a almacenar en dicho
nodo y otra variable que contiene el puntero con la posición del siguiente nodo.
class Nodo {
public $dato; (atributo)
public $proximo; (atributo)
public finction _construt ($elemento){ (método)
$this -> dato = $elemento;
$this -> próximo = null;
}
}
Con eso ya tenemos la lista creada, ahora se crea la clase donde se detallan las diferentes
diferentes procesos.
- Función que elimina el nodo que ocupa la posición que sigue a la posición pasada por
el parámetro.
- Función que recorre la lista desde el primer nodo hasta el último e imprime el dato
Con esto terminamos las funciones que realizan los diferentes procesos solicitados, pero estas no
son nada si no se muestran los resultados de estas, para eso se ejecutarán e imprimirán las
Lo primero es crear la lista. Para esto primero creamos un array para ordenar los elementos pares
primeros e impares luego. Después llenamos la lista con estos datos del array resultante anterior.
Para el llenado de la lita se podría haber utilizado un foreach o un for, pero por tiempo se realizo
el ingreso manual.
$elementos = array(95, 6, 88, 32, 598, 63, 796, 45, 1, 158, 13, 86, 36, 59, 701);
$arrayPares=array();
$arrayImpares=array();
Foreach ($elementos as $elemento){
If ($elemento%2==0){
$arrayPares[]=$elemento;
}else{
$arrayImpares[]=$elemento;
}
}
$nuevoElementos=array_merge($arrayPares,$arrayImpares);
$lista=array();
$lista = new ListaEnlazada();
$lista->InsertarPrimerovacia($nuevoElementos[0]);
$lista->InsertarDespues($nuevoElementos[1],1);
$lista->InsertarDespues($nuevoElementos[2],2);
$lista->InsertarDespues($nuevoElementos[3],3);
$lista->InsertarDespues($nuevoElementos[4],4);
$lista->InsertarDespues($nuevoElementos[5],5);
$lista->InsertarDespues($nuevoElementos[6],6);
$lista->InsertarDespues($nuevoElementos[7],7);
$lista->InsertarDespues($nuevoElementos[8],8);
$lista->InsertarDespues($nuevoElementos[9],9);
$lista->InsertarDespues($nuevoElementos[10],10);
$lista->InsertarDespues($nuevoElementos[11],11);
$lista->InsertarDespues($nuevoElementos[12],12);
$lista->InsertarDespues($nuevoElementos[13],13);
$lista->InsertarUltimo($nuevoElementos[14]);
Vemos que el número 701 del listado que ocupaba la última posición,
ya no está en el listado.
Como no se podía utilizar vaciado de la lista usando algún recurso entregado, use eliminación
consecutiva del primer elemento.
$elementos = array(95, 6, 88, 32, 598, 63, 796, 45, 1, 158, 13, 86, 36, 59, 701);
$arrayPares=array();
$arrayImpares=array();
Foreach ($elementos as $elemento){
If ($elemento%2==0){
$arrayPares[]=$elemento;
}else{
$arrayImpares[]=$elemento;
}
}
$nuevoElementos=array_merge($arrayPares,$arrayImpares);
$lista=array();
$lista = new ListaEnlazada();
$lista->InsertarPrimerovacia($nuevoElementos[0]);
$lista->InsertarDespues($nuevoElementos[1],1);
$lista->InsertarDespues($nuevoElementos[2],2);
$lista->InsertarDespues($nuevoElementos[3],3);
$lista->InsertarDespues($nuevoElementos[4],4);
$lista->InsertarDespues($nuevoElementos[5],5);
$lista->InsertarDespues($nuevoElementos[6],6);
$lista->InsertarDespues($nuevoElementos[7],7);
$lista->InsertarDespues($nuevoElementos[8],8);
$lista->InsertarDespues($nuevoElementos[9],9);
$lista->InsertarDespues($nuevoElementos[10],10);
$lista->InsertarDespues($nuevoElementos[11],11);
$lista->InsertarDespues($nuevoElementos[12],12);
$lista->InsertarDespues($nuevoElementos[13],13);
$lista->InsertarUltimo($nuevoElementos[14]);
echo "Listado de Elementos Pares e Impares";
echo "<br>";;
$lista->ImprimirLista();
echo "<br>";
echo "Se elimina Primer Elemento";
echo "<br>";
$lista->EliminarPrimero();
$lista->ImprimirLista();
echo "<br>";
echo "Se elimina Último Elemento";
echo "<br>";
$lista->EliminarNodo(701);
$lista->ImprimirLista();
echo "<br>";
echo "Se elemina Nodo 5";
echo "<br>";
$lista->EliminarDespues(5);
$lista->ImprimirLista();
echo "<br>";
echo "<br>Se Insertan 10 elementos.<br>";
$lista->InsertarDespues(200,12);
$lista->InsertarDespues(201,13);
$lista->InsertarDespues(202,14);
$lista->InsertarDespues(203,15);
$lista->InsertarDespues(204,16);
$lista->InsertarDespues(205,17);
$lista->InsertarDespues(206,18);
$lista->InsertarDespues(207,19);
$lista->InsertarDespues(208,20);
$lista->InsertarUltimo(209);
$lista->ImprimirLista();
echo "<br>";
echo "Se elimina Primer Elemento 2";
echo "<br>";
for ($j=0; $j<22; $j++){
$lista->EliminarPrimero();
}
$lista->ImprimirLista();
¿>
Bibliografía
1.- Link 1
2.- Link 2
3.- Link 3
4.- Materialentregado