Professional Documents
Culture Documents
Estructuras de Datos
.
.
Bibliografía
Sahni, Sartaj, "Data structures, algorithms, and applications in
Java". McGraw Hill, 2000
.
.
Objetivos
3. Tablas hash
- Funciones de hashing. Técnicas de resolución de colisiones: abierto y
cerrado. Implementación de tablas hash
4. Estructuras arbóreas
- Árboles binarios y de búsqueda. Árboles binarios equilibrados, Árboles
AVL y Árboles rojinegros. Implementación de árboles
1 Introducción
Estructura de Datos:
• Forma sistemática de organizar y almacenar datos
• Su elección estará guiada por conceptos como: eficiencia
temporal o espacial, facilidad de uso, escalabilidad, ...
Complejidad
Operación
temporal
añade intermedio O(n)
añade último O(1)
elimina intermedio O(n)
elimina último O(1)
obtiene elemento i-ésimo O(1)
obtiene tamaño lista O(1)
t
O(n)
8c�16c
4c�8c
2c�4c
c�2c
c 2c 4c 8c n
012
a
0 hasNext()�true
3 iterador 2 next() �a[2]
numEle
hasNext()�true
next() �a[0]
hasNext()�true
next() �a[1]
hasNext()�false
3
1
a1 a2 ... an
a1 a2 an
...
cabecera a1 ... an
principio
a1 a2 ... an
principio
El pseudocódigo lista_simple_enlace no
utiliza nodo de cabecera
a1 a2 ... an
lista iterador
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 03/10/11 24
Tema 1. Técnicas de Implementación 2. Estructuras de datos lineales
2.3. Implementación mediante listas simplemente enlazadas
Cabecera Celdas
a1 a2 ... an
principio
lista antUltRet previo
iterador
a b c ...
antUltRet
previo
iterador
2) después de next
a b c ...
antUltRet
previo
iterador
3) next retorna c
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 03/10/11 26
a b c ...
antUltRet
previo
iterador
2) después de previous
a b c ...
3) previous retorna b
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 03/10/11 27
Tema 1. Técnicas de Implementación 2. Estructuras de datos lineales
2.3. Implementación mediante listas simplemente enlazadas
Diagrama de añadir
1) antes de añadir
a b ...
previo próximo
...
antUltRet
previo
iterador
2) después de añadir
a b ...
próximo
antUltRet
previo x
iterador previo
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 03/10/11 28
1) antes de borrar
a b c ...
antUltRet
previo
iterador 2) después de borrar
a b c ...
antUltRet
previo
iterador
1) antes de borrar
a b c ...
antUltRet
previo
iterador 2) después de borrar
a b c ...
antUltRet
previo
iterador
Elementos
...
a1 a2 ... an
principio
fin También podrían implementarse usando
nodos "falsos" (cabecera y cola)
lista
... a b c ...
Iterador de la lista
El iterador de la lista contiene
• proximo: puntero al elemento a retornar por next (o dicho de
otra forma, al posterior al que debe retornar previous)
• ultRet: puntero al último elemento retornado por next o
previous
- utilizado por remove
...
a1 a2 ... an
principio
lista iterador
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 03/10/11 33
Tema 1. Técnicas de Implementación 2. Estructuras de datos lineales
2.4. Implementación mediante listas doblemente enlazadas
...
a1 a2 ... an
principio
lista iterador
...
a1 a2 ... an
principio
lista iterador
a b c ...
ultRet
proximo
iterador
2) después de next
a b c ...
ultRet
proximo
iterador
3) next retorna b
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 03/10/11 36
Tema 1. Técnicas de Implementación 2. Estructuras de datos lineales
2.4. Implementación mediante listas doblemente enlazadas
a b c ...
ultRet
proximo
iterador
2) después de previo
a b c ...
ultRet
proximo
iterador
2) previous retorna b
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 03/10/11 37
Diagrama de añade
1) situación inicial
a b c ...
...
ultRet
proximo
iterador 2) después de añade
a b c ...
ultRet
proximo a
iterador nuevaCelda
1) situación inicial
a b c ...
ultRet
proximo 2) después de borra
iterador
a b c ...
ultRet
proximo
iterador
1) situación inicial
a b c ...
ultRet
proximo 2) después de borra
iterador
a b c ...
ultRet
proximo
iterador
1
Hay que encontrar el elemento (O(n)) antes de añadirle/eliminarle
2
Se puede hacer en O(1) añadiendo a la lista un puntero al final
M. Aldea, M. González, P. Sánchez
Estructuras de Datos 03/10/11 41