You are on page 1of 17

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:

<?php

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--;

public function BuscarDato($elemento)

$encontro = false;

$contador = $this->ContarNodos();

$actual = $anterior = $this->primero;

for($i=0;$i<$contador;$i++)
{

if ($actual->dato == $elemento) {

$encontro = true;

$posi = $i;

break;

else {

$anterior = $actual;

$actual = $actual->proximo;

if ($encontro != false){

echo "El elemento esta dentro de la lista en la posicion: ".$posi;

} else {

echo "El elemento no se encuentra dentro de la lista.";

public function ImprimirLista()

$elementos = [];

$actual = $this->primero;

while($actual != null) {

array_push($elementos, $actual->dato);

$actual = $actual->proximo;
}

$str = '';

foreach($elementos as $elemento)

$str .= $elemento . '->';

echo $str;

$lista = new ListaEnlazada();

$lista->InsertarPrimero(95);

$lista->InsertarUltimo(6);

$lista->InsertarUltimo(88);

$lista->InsertarUltimo(32);

$lista->InsertarUltimo(598);

$lista->InsertarUltimo(63);

$lista->InsertarUltimo(796);

$lista->InsertarUltimo(45);

$lista->InsertarUltimo(1);

$lista->InsertarUltimo(158);

$lista->InsertarUltimo(31);

$lista->InsertarUltimo(86);

$lista->InsertarUltimo(59);

$lista->InsertarUltimo(701);
$lista->ImprimirLista();

echo "\n";

echo 'Total de elementos en la lista: '.$lista->ContarNodos();

echo "\n";

echo "\n";

$lista->EliminarPrimero();

$lista->ImprimirLista();

echo "\n";

echo "Se elimino el primer elemento de la lista","\n";

echo 'Total de elementos dentro de la lista: '.$lista->ContarNodos();

echo "\n";

echo "\n";

$lista->EliminarNodo(701);

$lista->ImprimirLista();

echo "\n";

echo "Se elimino el último elemento de la lista","\n";

echo 'Total de elementos en la lista: '.$lista->ContarNodos();

echo "\n";

echo "\n";

$lista->EliminarDespues(5);

$lista->ImprimirLista();

echo "\n";

echo "Se elimina un elemento del centro de la lista","\n";

echo 'Total de elementos en la lista: '.$lista->ContarNodos();


echo "\n";

echo "\n";

$cantidad = 10;

for($i=0;$i<$cantidad;$i++){

$lista->InsertarUltimo($i);

$lista->ImprimirLista();

echo "\n";

echo "Se insertan $cantidad de elementos en lista","\n";

echo 'Total de elementos en la lista: '.$lista->ContarNodos();

echo "\n";

echo "\n";

$largo = $lista->ContarNodos();

for($i=0;$i<$largo;$i++){

$lista->EliminarPrimero();

$lista->ImprimirLista();

echo "\n";

echo "Se eliminan todos los elementos en la lista","\n";

echo 'total de elementos en la lista: '.$lista->ContarNodos();

echo "\n";

echo "\n";
Bibliografía

 IACC (2016 Listas Enlazadas. Estructuras de Datos. Semana 5.

 TEST CODE: http://www.phptester.net/

You might also like