UT1. Conceptos de Java para EDAs Tema 4: Representación Enlazada Bibliografía: Weiss, M.A. Estructuras de datos en Java. Adisson-Wesley, 2000. Capítulo 16 Estudiar la Representación Enlazada de una Secuencia de Datos mediante una Lista Enlazada Genérica (LEG) Compararla con su ya conocida Representación Contigua (mediante un array/ArrayList) utilizando criterios de eficiencia. Estudiar la LEG Ordenada como una solución al problema de la ordenación de los datos de una LEG Definir diversos tipos de LEG en base a criterios de eficiencia y sus correspondientes implementaciones: con referencias a primer y último nodo, circular y doblemente enlazada Variables Referencia y Objetos Java 1. Representación Enlazada de una Secuencia de Datos: la Lista Enlazada 2. Implementación de una Lista Enlazada Genérica (LEG): la clase LEG a. Atributos, métodos e instancias de la clase b. Implementación de métodos de la clase: constructor e insertar, métodos toString y toArray y métodos recuperar, indiceDe y eliminar una variable Referencia Java es, también, un Enlace a un Objeto 3. Una solución al problema de la Ordenación de una LEG: la LEG Ordenada Idea Básica para la Representación 4. Otras implementaciones en Java de una LEG: LEG con Referencias al primero y último de sus Nodos, LEG Circular, LEG Doblemente Enlazada Enlazada en Java de una Secuencia de Datos Introducción a la Representación Enlazada: Referencias como Enlaces en Java Introducción a la Representación Enlazada: Referencias como Enlaces en Java Trácese la ejecución del siguiente programa Java: "# ! "# $ % "# & ' ' Introducción a la Representación Enlazada: Referencias como Enlaces en Java Introducción a la Representación Enlazada: Referencias como Enlaces en Java Grupo de tres Figuras Enlazadas $ % & "# Para la Representación Enlazada de una Secuencia se necesita encapsular convenientemente cada uno de sus Datos junto con la Referencia o Enlace al siguiente Tipos para la Representación Enlazada: Nodo y Lista Enlazada Def. recursiva de Nodo: un Nodo TIENE UN Dato de una Secuencia y UN Enlace al Nodo con el Dato siguiente Def. de Lista Enlazada: representación de una Secuencia de Datos mediante una Lista de Nodos tal que: 1.- sólo se puede acceder a la Lista, o a uno de sus Nodos, vía Referencia al primero de sus Nodos 2.- su último Nodo contiene una Referencia null como siguiente Una Lista Enlazada es una Representación Enlazada Lineal de una Secuencia de Datos alternativa a su ya conocida Representación (o ) ( * ) Contigua (mediante un Características de la Representación Enlazada Los Nodos de una Lista no ocupan posiciones contiguas de memoria sino que se sitúan dispersos en ésta, cada uno en la posición que se le asigne en el momento de su creación via (memoria dinámica) una mayor atención al implementar las operaciones las operaciones de inserción y borrado de un Nodo no exigen desplazamientos, tan sólo modificar los Enlaces oportunos al El acceso a la Lista o a uno de sus Nodos se realiza vía Referencia de sus Nodos el acceso a un Nodo distinto del tiene un coste Temporal lineal con la talla de la Lista y no constante como en una Representación Contigua; a cambio, las operaciones de inserción y borrado de un Nodo no exigen desplazamientos Características de la Representación de una Secuencia mediante una Lista Enlazada !" % +, 1 1. Coste Espacial: lineal con la talla de la Secuencia que representa, la misma que la de la Lista Enlazada 2. Coste Temporal: lineal con la talla de la Secuencia que representa para cualquier operación de Recorrido o Búsqueda sobre la Lista Enlazada # $ & * ./ 0 21 #1 #11 1 * ./ 0 * ./ 0 3 , -4 4 , 4 &2 & * *. 6 4 6 6 ) ( 6 5 + -4 4 *. *. ' # $! () ! - 21 #1 1 , - + 9 *. * ./ 0 21 #1 *. 21 #11 7 &1 * 1 * ./ 0 1 1 * .83 * ./ 0 1 & * ./ 0 : : *. * ./ 0 * ./ 0 *. 61 *. . ) ++ *. ' * 2 * ./ 0 * ./2 0 * ./2 0 2 A = = 2 $% ( = = B * 2 ( = = B 8 * = 2 , ( = = BFGB = = = ' = = = ' > = = = ' = = = ' 8 + 8 = = = ' = = = ' ( ? ' $ = @ * ./ 0 1 ' 01) , - ; 6 " ' : : * ./ 0 ' 1 9 ++ < < *. / ; ' ' = = H 1 4 C B D= $E4 C B $E I + : @@ # )4 *. 2 3 ' )4 : @@ 5 @@: FJ > *. 1 E <= * ./ 0 1 * ./ 0 > ' 5 1) + ; 5 1) * $ FJ > * .@@: > ! = < = DD ' 6 77777777777 0 *. + 1) 4 "#$ > >6 .$ ) K > 5 1) * .6 : @@ * .@@: = = = ' + > > <= + # 2 & ! ! " #$ &% & ' > ( 8 1 ! + ' 9 )4 ) ( $ 5 1) / 1 : ( : *. H I , , 1 * ./ 0 > > > >L >/ ) ( = E > < >= >DD , , 1 * ./ 0 > D = >= > >L > >= DB C B , + 1) 4 1 * ./ 0 < * $ .$ ) > >L > >= > ' , >? / 0 8 ! 1 ;& ( & <& * + =& * + * ./ 0 ' ' ' + > $ > ) ' * ./ 0 ) ( $ > 1 * ./ 0 > , 8 ; * ./ 0 < >L MM L >= ,L =; > > >= ' 8 ; + 5 1) @ + *. ' / 1 + 1 * ./ 0 < , ' / 1 > 1 > MM L >= =; * ./ 0 < > > , N$ > >L >= > >? / > > >L > >? / + > MM L >= =; > >= > , >= ( = = = = = ' # >? / 1 A B2 3 ' 1 ; B ( ' > !, > / 1 >? / > *. 6 > 1 * ./ 0 < > >L 9 MM L >= > 6 =; > >= D 6 77777777777 $ 77777777777 , 77777777777 > , 6 && ' A 4 )1 C > ' )1 / 1 >? / > = >= 1 O " )1 > > 1 6 * ./ 0 < > >L 6 MM L >= > > =; > >= ' , 6 77777777777 $ 77777777777 > , " 77777777777 )1 = 6 >= NN ' !#% #& # 9 E , 6 + 1) 6 4 , -, - '# 1 * ./ 0 1 * ./ 0 < >L > ' : : = , L ' ' 1 * ./ 0 > 6 > MM >= = > >= aux ( > = !#% ) > 3 ant + > /E primero + ) , - "($ !#%"#$*# ). - )1 / !#% 0+ .1 *. ! ( 2 !#% 3 ! 4 ! 5 $? 1 - (. / 0 1+ # , * ./ 0 *. ! ! 1 *. 9 *. # /0 1 * ./ 0 *. # : :: ) ) 6 = = = ' = = = ' > + F 1 , # E ' = = = ' 1 > 0 1 > = = = ' : :P 8 = = = ' : :A ' 1 = = = = + F 1 , - = = = K ) 2 , DD ' * ./ 0 >6 5 F 2 + + F 1 , - + , - 9 3 * .+ 1 *. *. 2 1 1 /0 * ./ 0 *. = = =' E ' = = = ' = = = ' : :: ) ) 5 = = = = 1 > 0 = = = ' : : $E > = = = ' : : $$ = = = ' 1 + , - !4 1 B B , 3 L , 1 * ./ 0 D D > > >L > > + *. 1 1 1 & 1 - DB C B DB C B 0 ' ' * = = = = 1 ! 1 5 ! ! = = = = ! 5 !4 1 ! " 9 1 1 1 * +. , - 9 $ ! * + ./ 0 1 * + ./ 0 * +. < 6 6 ' 1 ! , - 6 * +. , * + ./ 0 = = =' = = = ' E ' > 61 * + ./ 0 61 : :: ) ) * + ./ 0 = = = ' 1 0 > < < < = = = ': : > = = = ': : = = = ' ' ' 1 ! , - 0 > 1 * + ./ 0 , 1 L * + ./ 0 >6 6 = 4 5 DD ' ! 6 ! ' = = = = ! 5 ! , "