Está en la página 1de 8

Control 5 lista enlazada, compa este cdigo lo encontr pero es muy complejo para mi, si piensas

que esta bn salo para tu control si el mo esta malo cmbialo x este tbn porfa.

lo prob y funciona la raja pero debe estar hecho por un master jajaja...

<?php

class Nodo

//variable que contiene el elemento a almacenar dentro del nodo

public $dato;

//variable que contiene el puntero con la posicion del siguiente nodo

public $proximo;

//funcion void para crear el nodo

public function __construct($elemento)

$this->dato = $elemento;

$this->proximo = null;

//Clase Lista Enlazada

class ListaEnlazada

//variable o puntero que apunta al primer nodo de la lista

public $primero = null;

//variable que almacena la cantidad de elementos dentro de la lista

private static $count = 0;


//funcion que cuenta los nodos dentro de la lista

public function ContarNodos()

return self::$count;

//funcion que inserta un nodo dentro de una lista vacia

public function InsertarPrimerovacia($elemento) {

$this->primero = new Nodo($elemento);

$this->proximo = null;

self::$count++;

//funcion que inserta un nodo en la primera posicion de una lista

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

//funcion que inserta un nodo en la ultima posicion de la lista

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

//funcion que inserta un nodo despues de una posicion dada

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

//funcion que elimina el primer nodo de la lista

public function EliminarPrimero() {

if ($this->primero != null) {

$actual = $this->primero;

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

self::$count--;

//funcion que elimina el nodo que ocupa la posicion que sigue a la posicion pasada por
parametro

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

//funcion que elimina el nodo cuyo dato coincide con el valor del parametro

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

//funcion que recorre la lista desde el primer nodo hasta e ultimo e imprime el dato dentro del
nodo

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;

//Creamos la nueva

$lista=array();

$lista = new ListaEnlazada();


$lista->InsertarPrimerovacia(6);

$lista->InsertarDespues(32,1);

$lista->InsertarDespues(36,2);

$lista->InsertarDespues(86,3);

$lista->InsertarDespues(88,4);

$lista->InsertarDespues(158,5);

$lista->InsertarDespues(598,6);

$lista->InsertarDespues(796,7);

$lista->InsertarDespues(1,8);

$lista->InsertarDespues(13,9);

$lista->InsertarDespues(45,10);

$lista->InsertarDespues(59,11);

$lista->InsertarDespues(63,12);

$lista->InsertarDespues(95,13);

$lista->InsertarUltimo(701);

echo" Estos son los elementos ordenados desde los pares hasta los impares.<br>";

$lista->ImprimirLista();

echo "<br> Ahora eliminaremos el primer elemento.<br>";

$lista->EliminarPrimero();

$lista->ImprimirLista();

echo "<br> Ahora eliminaremos el ultimo.<br>";

$lista->EliminarNodo(701);

$lista->ImprimirLista();

echo "<br> Ahora eliminaremos el nodo que esta despues del nodo 5.<br>";

$lista->EliminarDespues(5);
$lista->ImprimirLista();

echo "<br>Insertar 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();

?>

También podría gustarte