You are on page 1of 6

INTRODUCCION Cuando requerimos definir variables en un programa, los espacios de memoria asignados 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 manipulacin 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 son muy utilizados por las estructuras de datos, as stos pueden ser utilizados por las 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 siguiente elemento de la lista.

A partir de la estructura bsica Nodo se puede construir estructuras de datos enlazadas. 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 hijos. 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 tamao es constante, la lista crece o se encoge conforme se agregan o retiran elementos de la misma y se requiere de un mecanismo que indique cul nodo del arreglo est disponible para insertar un nuevo elemento o si un nodo es retirado
GEMA PATRICIA GALICIA SANTOS No. De Control.: 11070893

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.

El mtodo String toString ( ) es del estndar de Java que es la forma de imprimir cosas. Si un objeto se quiere imprimir en una forma especial, se debe definir este mtodo con las instrucciones de cmo hacerlo. La adicin a la informacin de las comillas automticamente convierte al tipo String. Sin este mtodo se obtiene la actual representacin binaria de los datos miembros de la clase. La estructura de datos basada en nodos provee un crecimiento y reduccin dinmicos y son la clave de algunos algoritmos complejos. Una vez hecha la especificacin de la estructura nodo, se puede establecer la estructura Lista basada en arreglos. Una lista permite la insercin y eliminacin de objetos en cualquier posicin, por lo que para poder manipular esta estructura es necesario tener un control de cules nodos estn disponibles (lista de disponibilidades) a travs del avail y cules ya estn ocupados (lista de informacin) a travs de L. Para esto se manejarn dos mtodos auxiliares que identificaremos como GetNode y FreeNode, el primero nos indicar en qu Nodo se puede almacenar informacin, y el segundo servir para liberar el nodo que se elimine en un momento dado.

GEMA PATRICIA GALICIA SANTOS

No. De Control.: 11070893

Las operaciones bsicas que requiere esta estructura son: inicializacin (constructor), 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 comportamiento 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, sino que los nodos son solicitados de la memoria global cuando se requiere almacenar un dato, y asimismo, son liberados a la misma cuando el dato se borra de la lista. En el manejo de nodos en un arreglo no puede haber crecimiento o reduccin, ya que el arreglo tiene como caracterstica que es esttico, desde el inicio se reserva el espacio para la cantidad de nodos que queremos manejar. En el caso del almacenamiento 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 memoria en la computadora).

La lista entera puede ser referenciada desde el primer nodo, el cual es usualmente referenciado como la cabeza de la lista. El ltimo nodo en la cadena de nodos usualmente tiene alguna caracterstica especial que indica que es el ltimo. Esta caracterstica 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 tienen variantes de las mismas como son las listas circulares, las listas con nodo cabeza, tanto sencilla como circular, y adems las listas doblemente

encadenadas.

GEMA PATRICIA GALICIA SANTOS

No. De Control.: 11070893

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 nodo de la lista apunte al primer nodo de la misma, en vez de ser un puntero a tierra, se convierte en una lista circular. De esta manera es posible llegar a cualquier 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 con algunas modificaciones adecundolo al lo que se va a utilizar. Por ejemplo, la operacin InsAfter ( ), no sufre modificaciones y en la operacin DelAfter ( ), slo hay 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 no es deseable.

3.5.5 Listas encadenadas con nodo cabeza Son aquellas estructuras que mantienen un nodo extra al inicio de la lista, que no pertenece en s a la lista, slo contiene informacin referente a la misma y es llamado nodo cabeza o nodo de encabezamiento, como se puede apreciar en la siguiente representacin grfica. Este nodo cabeza puede tener muchos usos, tantos como las aplicaciones as lo establezcan.

La porcin info de este nodo cabeza puede ser utilizada de varias maneras, entre otras, para:

1. Contener el nmero de nodos en la lista (sin incluir el nodo de encabezamiento). Su desventaja estriba en que para insertar o remover cualquier elemento de la lista, se requiere ms trabajo. Su ventaja es que se puede conocer el nmero de elementos en la lista directamente del nodo cabeza, sin tener que recorrer la lista.

GEMA PATRICIA GALICIA SANTOS

No. De Control.: 11070893

2. Contener un apuntador al ltimo elemento de la lista. Esta implementacin se podra usar para la representacin de una estructura cola, eliminando el uso de un apuntador externo, ya que en el campo info del nodo cabeza se tendra la direccin del final y en el campo next la direccin del frente.

3. Contener un apuntador al nodo actual en la lista. Esto tambin elimina la necesidad de un puntero externo en el proceso de recorrido de la lista.

GEMA PATRICIA GALICIA SANTOS

No. De Control.: 11070893

CUESTIONARIO. 1) Qu es una lista? R= 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 siguiente elemento de la lista. 2) Qu operaciones permite la lista? R= Inicializacin (constructor), inserciones, y supresiones de elementos al inicio, en medio y al final. 3) Para que funciona el GetNode? R= Nos indicar en qu Nodo se puede almacenar informacin. 4) Para que funciona el FreedNode? R= Servir para liberar el nodo que se elimine en un momento dado.

5) Tiene el mismo comportamiento que una lista en almacenamiento esttico, la diferencia es que en la lista dinmica no se utiliza un arreglo? R= Una lista enlazada o encadenada en almacenamiento dinmico

GEMA PATRICIA GALICIA SANTOS

No. De Control.: 11070893