Listas Enlazadas. Estructuras de Datos
Enviado por Sergio Gallegos • 8 de Noviembre de 2018 • Tarea • 500 Palabras (2 Páginas) • 1.233 Visitas
Listas Enlazadas
Sergio Eduardo Gallegos González
Estructuras de Datos
Instituto IACC
28 de Octubre de 2018
INSTRUCCIONES:
1) Teniendo la siguiente lista de 15 números enteros:
(95,6,88,32,598,63,796,45,1,158,31,86,59,701)
Realice un ejemplo en php que almacene dichos números, para lo cual considere lo siguiente: si el número es impar, debe ser insertado al inicio y si es par, insértelo en el intermedio de la lista.
* Utilice como guía el recurso adicional.
2) Luego de insertar los 15 elementos:
a) Elimine 3 elementos: uno al inicio, uno al final y uno en la posición de su preferencia, y luego realice un ciclo que imprima los elementos restantes de la lista.
b) Inserte 10 elementos más. ¿Cuál es el límite de inserción de su lista? Explique brevemente.
c) Ejecute un ciclo para vaciar la lista eliminando uno a uno los elementos (sin utilizar la función vaciar del recurso adicional).
DESARROLLO:
class Nodo
{
public $dato;
public $proximo;
public function __construct($elemento)
{
$this->dato = $elemento;
$this->proximo = null;
}
}
class ListaEnlazada
{
public $primero = null;
private static $count = 0;
public function ContarNodos()
{
return self::$count;
}
public function InsertarPrimerovacia($elemento) {
$this->primero = new Nodo($elemento);
$this->proximo = null;
self::$count++;
}
public function InsertarPrimero($elemento) {
if ($this->primero == null) {
$this->primero = new Nodo($elemento);
} else {
$aux = new Nodo($elemento);
$aux->proximo = $this->primero;
$this->primero = $aux;
}
self::$count++;
}
public function InsertarUltimo($elemento) {
if ($this->primero == null) {
$this->primero = new Nodo($elemento);
} else {
$actual = $this->primero;
while ($actual->proximo != null)
{
$actual = $actual->proximo;
}
$actual->proximo = new Nodo($elemento);
}
self::$count++;
}
public function InsertarDespues($elemento,$key){
if($key == 0){
$this->InsertarPrimero($elemento);
}
else{
$aux = new Nodo($elemento);
$actual = $this->primero;
$anterior = $this->primero;
for($i=0;$i<$key;$i++)
{
$anterior = $actual;
$actual = $actual->proximo;
}
$anterior->proximo = $aux;
$aux->proximo = $actual;
self::$count++;
}
}
public function EliminarPrimero() {
if ($this->primero != null) {
$actual = $this->primero;
$this->primero = $actual->proximo;
}
self::$count--;
}
public function EliminarDespues($key){
if($key == 0){
$this->EliminarPrimero($elemento);
}
else{
$actual = $this->primero;
$anterior = $this->primero;
for($i=0;$i<$key;$i++)
{
$anterior = $actual;
$actual = $actual->proximo;
}
$anterior->proximo = $actual->proximo;
self::$count--;
}
}
public function EliminarNodo($key)
{
$actual = $anterior = $this->primero;
while($actual->dato != $key) {
$anterior = $actual;
$actual = $actual->proximo;
}
if ($actual == $anterior) {
$this->primero = $actual->proximo;
}
$anterior->proximo = $actual->proximo;
self::$count--;
...