Uploaded by Damaris Del Carpio

TEO S3 EstructuraDatos 2024 I

advertisement
Estructura de Datos
Semana 3
31/08/2023 – Escuela de Ingeniería de Software
Logro de la sesión
Al finalizar la sesión, el estudiante:
• Utiliza en forma crítica las listas enlazadas para la
solución de problemas e implementa programas
utilizando listas enlazadas.
Estructuras de datos
lineales
Implementación de un TAD lineal utilizando una
estructura dinámica
IMPLEMENTACIÓN DE UN TAD LINEAL UTILIZANDO UNA ESTRUCTURA DINÁMICA
Estructuras de datos lineales
• Estructura dinámica
Lucas
Mary
Los espacios en la
memoria permiten
que las órdenes
físicas y lógicas
puedan ser diferentes
John
Jim
Arthur
Martin
Mary
Cada ubicación no
solo almacena
(una referencia a)
un objeto, sino
también la
referencia
(dirección) a su
sucesor en la Lista
John
Jim
Arthur
Martin
4
IMPLEMENTACIÓN DE UN TAD LINEAL UTILIZANDO UNA ESTRUCTURA DINÁMICA
Estructuras de datos lineales
• Necesitamos definir una clase, Nodo, para representar cada
ubicación. La clase Nodo tiene dos atributos:
• Dato o elem: es la referencia a un elemento almacenado en la Lista.
Es decir, almacena la dirección de memoria donde se almacena el
elemento. El tipo de datos de elem debe ser del mismo tipo que los
elementos de la Lista
• Next o siguiente: es la referencia al nodo que almacena el siguiente
elemento en la Lista. Su tipo de datos debe ser Nodo
Nodo
elem
next
Dato
siguiente
ESPECIFICACIÓN DE UN TAD LISTA
Estructuras de datos lineales
• Especificación formal:
• Secuencia de elementos {a1,a2,…,an} donde cada elemento tiene un
único predecesor (excepto el primero que no tiene predecesor) y un
único sucesor (excepto el último que no tiene sucesor).
• Las operaciones básicas de un TAD Lista son:
• Agregar un elemento a la Lista
• Eliminar un elemento de la Lista
• Consultar un elemento de la Lista
Nodo
elem
next
Dato
siguiente
ESPECIFICACIÓN DE UN TAD LISTA
Estructuras de datos lineales
• Especificación formal (operaciones de agregar):
ESPECIFICACIÓN DE UN TAD LISTA
Estructuras de datos lineales
• Especificación formal (operaciones de consulta):
ESPECIFICACIÓN DE UN TAD LISTA
Estructuras de datos lineales
• Especificación formal (operaciones de borrado):
IMPLEMENTACIÓN DE UN TAD LISTA USANDO UNA LISTA SIMPLEMENTE ENLAZADA
Estructuras de datos lineales
First (inicio)
María
Pepa
Juan
Arturo
Last(fin)
Martín
Listas Enlazadas
El nodo o elemento
contiene el dato y
un
enlace
al
siguiente nodo o
elemento
Nodo
Enlace
Enlace
D E
Nulo
Inicio
Fin
11
Comparación Listas Enlazadas vs Arreglo
12
Listas Enlazadas
Una lista es una estructura de datos secuencial. En una lista enlazada: la posición
del siguiente elemento de la estructura la determina el elemento actual. Es necesario
almacenar al menos la posición de memoria del primer elemento. Además es
dinámica, es decir, su tamaño cambia durante la ejecución del programa.
Una lista enlazada se puede definir recursivamente de la siguiente manera:
• Una lista enlazada es una estructura vacía o
• Un elemento de información y un enlace hacia una lista (un nodo).
Gráficamente se suele representar así:
Estructura de una Lista Enlazada
Inicio
Dato
Inicio
Fin
Nulo
Si inicio o fin
apuntan
a
nulo
entonces la lista
está vacía
Enlace o
siguiente
Fin
14
Operaciones en Listas Enlazadas
dato
sig
inicio.sig.dato = 5.25
inicio.dato = 4.15
15
Clasificación de las Listas Enlazadas
16
Clasificación de las Listas Enlazadas
Las listas se pueden dividir en 4 categorias:
CATEGORÍA
DESCRIPCIÓN
Simplemente
Enlazadas
Cada nodo (elemento) contiene un único enlace que
conecta ese nodo al nodo siguiente o nodo sucesor. La
lista es eficiente en recorridos directos (“adelante”)
Doblemente
enlazadas
Cada nodo contiene dos enlaces, uno a su nodo
predecesor y el otro a su nodo sucesor. La lista es
eficiente tanto como en recorrido directo (“adelante”)
como en recorrido inverso (“atras”).
Circular
simplemente
enlazada
El ultimo elemento (cola) se enlaza al primer elemento
(cabeza), de tal modo que la lista puede se recorrida de
modo circular (“anillo”)
Circular
doblemente
enlazada
El ultimo elemento se enlaza con el primer elemento y
viceversa. Esta lista se puede recorrer en modo circular
tanto en direccion directa como viceversa.
Recordar….?
Nodo y Puntero
Puntero
Aux
Final
Los punteros hacen referencia a un Nodo por lo
19
tanto son regularmente declarados de tipo Nodo
Clase Nodo
Atributos del
Nodo
Estructura
Puntero
tipo Nodo
Constructor
con sólo dato
Constructor con
dato y puntero
20
Clase Nodo
Puntero
Puntero
siguiente
Puntero
Nulo
inicio
fin
21
Clase Lista v1
22
Uso de Lista v1
23
Clase Lista v2
24
Uso de Lista v2
25
Eliminar un nodo del inicio
inicio.dato
inicio.siguiente
26
Clase Lista v3
27
Uso de Lista v3
28
Eliminar un nodo del final – Clase Lista v4
fin.dato
temporal.siguiente
fin.siguiente
29
Uso de Lista v4
30
Otras operaciones sobre las Listas simplemente
enlazadas
31
Otras operaciones sobre las Listas simplemente
enlazadas
32
Eliminar un nodo del final – Clase Lista v5
33
Eliminar un nodo del final – Clase Lista v5
34
Uso de Lista v5
35
Uso de Lista v5
36
Guía de Laboratorio
Download