You are on page 1of 2

INTRODUCCION Cuando requerimos definir variables en un programa, los espacios de memoria asig nados para su almacenamiento pueden ser

estticos o dinmicos. Los primeros, usando cualquier tipo de dato primitivo del lenguaje y en el segundo caso con la manipu lacin de los objetos. Una de las estructuras de datos bsicas en cualquier lenguaje de programacin es el arreglo. Los arreglos usualmente tienden a ser ms fciles de manejar, por lo que so n muy utilizados por las estructuras de datos, as stos pueden ser utilizados por l as listas, las pilas, las colas, los rboles y los grafos. Listas enlazadas o encadenadas Una lista es una estructura lineal encadenada compuesta por un conjunto ordenado de elementos, en donde cada elemento se denomina nodo y ste contiene un campo de informacin info y un campo de direccin o puntero next que indica la posicin del si guiente elemento de la lista. A partir de la estructura bsica Nodo se puede construir estructuras de datos en lazadas. Estas estructuras de datos pueden tener uno o ms punteros a otros nodos, que en Java se tratan a los objetos como un puntero (referencias). As la estructura nodo debe tener un elemento de dato y una referencia a otro nodo o nodos. Aquellos otros nodos que son referenciados son llamados los nodos hijo s. El nodo mismo es llamado el nodo padre en referencia a su hijo. Listas enlazadas o encadenadas basadas en arreglos Una lista cuya implementacin se basa en un arreglo, su operacin es dinmica, y su ta mao es constante, la lista crece o se encoge conforme se agregan o retiran elemen tos de la misma y se requiere de un mecanismo que indique cul nodo del arreglo es t disponible para insertar un nuevo elemento o si un nodo es retirado de la lista , considerar este espacio como disponible para ser usado ms adelante en una nueva insercin, esto porque el recurso de memoria debe ser usado eficientemente. Es deseable que las estructuras puedan almacenar cualquier tipo de dato, por lo que la implementacin tiene que ser genrica. Para esto se podran utilizar templates (plantillas) para la generalizacin de los tipos, o como en el caso particular de Java, en donde cada objeto es un descendiente de la clase Object, se puede usar esta clase en todas las estructuras y despus hacer un cast al tipo apropiado. En cuanto al dato next, este es de tipo int, ya que el siguiente nodo es una posicin del arreglo donde se encuentra el siguiente dato. Las operaciones bsicas que requiere esta estructura son: inicializacin (constructo r), inserciones y supresiones de elementos al inicio, en medio y al final Listas enlazadas o encadenadas en almacenamiento dinmico Una lista enlazada o encadenada en almacenamiento dinmico tiene el mismo comporta miento que una lista en almacenamiento esttico, la diferencia es que en la lista dinmica no se utiliza un arreglo, es decir, no hay reserva previa de memoria, sin o que los nodos son solicitados de la memoria global cuando se requiere almacena r un dato, y asimismo, son liberados a la misma cuando el dato se borra de la li sta. En el manejo de nodos en un arreglo no puede haber crecimiento o reduccin, y a que el arreglo tiene como caracterstica que es esttico, desde el inicio se reser va el espacio para la cantidad de nodos que queremos manejar. En el caso del alm acenamiento dinmico, el manejo de nodos enlazados se puede decir que no tiene un lmite en cuanto al nmero de elementos que se pueden almacenar (slo la cantidad de m emoria en la computadora). La lista entera puede ser referenciada desde el primer nodo, el cual es usualmen te referenciado como la cabeza de la lista. El ltimo nodo en la cadena de nodos u

sualmente tiene alguna caracterstica especial que indica que es el ltimo. Esta car acterstica la mayora de las veces es un puntero null al siguiente nodo. Las listas enlazadas son una de las estructuras de datos ms importantes y se tien en variantes de las mismas como son las listas circulares, las listas con nodo c abeza, tanto sencilla como circular, y adems las listas doblemente encadenadas. Listas encadenadas circulares Una de las desventajas de las listas lineales encadenadas es que dado un puntero q a un nodo, no se puede alcanzar cualquier otro nodo que le preceda, slo si se utiliza otro puntero. Si esta estructura se modifica de tal manera que el ltimo n odo de la lista apunte al primer nodo de la misma, en vez de ser un puntero a ti erra, se convierte en una lista circular. De esta manera es posible llegar a cua lquier nodo al recorrerla. En estas listas no existe ni primero ni ltimo elemento . Se aplican los mismos mtodos definidos anteriormente para su operacin, solo que co n algunas modificaciones adecundolo al lo que se va a utilizar. Por ejemplo, la o peracin InsAfter ( ), no sufre modificaciones y en la operacin DelAfter ( ), slo ha y que considerar la posibilidad de que la lista contenga un solo elemento, y en este caso si se borrase despus de la posicin p, se borrara al mismo nodo, lo cual n o es deseable.

You might also like