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
Publicado por: victor | Marzo 16, 2004 07:47 AM
No, a mano no, utilizo CodeBeautifier.
Publicado por: Cesar Tardaguila | Marzo 16, 2004 09:58 AM
Como le hago para ordenar una lista enlazada alfabeticamente con seleccion e insercion directa?
Gracias.
Publicado por: Luis | Junio 7, 2004 11:04 AM
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.
Publicado por: Cesar Tardaguila | Junio 8, 2004 06:20 PM