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