« ø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Ì

TrackBack

URL del Trackback para esta entrada:
http://ctarda.dreamhosters.com/cgi-bin/mt-tb.cgi/623

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.