« ¿Para qué puedo utilizar un PocketPC? | Inicio | Lista enlazada V2 »

Implementación de una lista enlazada

Pues vamos con una implementación de una lista enlazada simple. El código necesita ser optimizado (sobre todo porque el método deleteElement se apoya en otro que hace prácticamente lo mismo, y porque la lista se recorre por índices, y podría hacerse mejor simplemente mirando a los punteros). Pero sirve para empezar. De todas formas, según vaya oiptimizando el código, iré posteando las novedades.

¿Cómo funciona?. Pues para crear una instancia de la lista, se le pasa como parámetro una instancia de una clase llamada "comparador", que tiene definido un método lessThan() que es el que se encarga de decidir cómo se debe ordenar la lista. En este caso, la lista va a contener objetos, y la ordenación será por la propiedad "index" de esos objetos (ordenación ascendente, por cierto).

Por tanto, esa clase comparador quedaría más o menos así:

class net.designnation.structs.Comparador implements IOrder { function Comparador() { } public function lessThan( firstComp: Object, secondComp: Object): Boolean { if (firstComp.index< secondComp.index) { return true; } else { return false; } } }

Entonces, para crear la lista haríamos:

import net.designnation.structs.*; var myList:List = new List(new Comparador());

Y para manipularla:

myList.push({index:6, prop:"propvalue6"}); myList.insert({index:3, prop:"propvalue3"}); trace("Lista " + myList); myList.insert({index:0, prop:"propvalue0"}); trace("Lista " + myList); myList.insert({index:2, prop:"propvalue2"}); trace("Lista " + myList); myList.insert({index:1, prop:"propvalue1"}); trace("Lista " + myList); myList.insert({index:4, prop:"propvalue4"}); trace("Lista " + myList); myList.insert({index:5, prop:"propvalue5"}); trace("Lista " + myList); myList.insert({index:7, prop:"propvalue7"}); trace("Lista " + myList); myList.insert({index:6, uno:"propvalue6"}); trace("Lista " + myList);

Si te resulta de interés, puedes descargarte el código aquí

Comentarios

Una pregunta: qué usas para pintar el código en MT? CodeBeautifier, o lo haces "a mano"?

Gracias

No, a mano no, utilizo CodeBeautifier.

Como le hago para ordenar una lista enlazada alfabeticamente con seleccion e insercion directa?

Gracias.

Saludos, Luis, y perdona por tardar tanto en responderte, pero estoy bastante liado.

Puedes pasar al constructor de la lista una instancia de una clase que implemente el interfaz IOrder, por tanto, que contenga la implementación de dos métodos, uno llamado lessThan, y el otro equals.

Esos métodos son los que tienes que implementar, y son los que se utilizan en el método insertOrdered de la lista enlazada.

Si necesitas más ayuda, no dudes en pedirla.