Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estructuras de Datos
Andrea Rueda
anterior
primero
S0 S1 S2 S3 S4 S5 S6 S7
último
siguiente
posición
índice
Secuencias
●
Conceptos relevantes:
Secuencia 1
S0 S1 S2 S3 S4 S5 S6 S7
Secuencia 2 ≠ Secuencia 1
S1 S3 S6 S0 S2 S5 S7 S4
TAD Lista
TAD Lista
●
Secuencia finita de ●
Acceso aleatorio:
datos: – Restringido.
– Primero, último. ●
Algoritmos:
– Siguiente, anterior. – Vacía, 1 elemento.
●
Recorrido: – Cabeza, cola.
– Primero → Último. – Intermedio.
– Último → Primero.
TAD Lista
Cabeza
1 56 12 7 -9 3 1 NULL
Ventana / Cursor /
Iterador Cola
TAD Lista
Cabeza
1 56 12 7 -9 3 1 NULL
Ventana / Cursor /
Iterador Cola
¿Estado? ¿Interfaz?
TAD Lista
●
Estado:
– Cabeza.
– Cola.
– {Ei} (¿importa el tipo?).
●
Interfaz:
– Creadoras.
– Analizadoras: tamaño, acceso, cabeza, cola.
– Modificadoras: insertar, eliminar.
TAD Lista
TAD Lista
Conjunto mínimo de datos:
- ...
- ...
Comportamiento (operaciones) del objeto:
- ...
- ...
- ...
- ...
- ...
- ...
TAD Lista
TAD Lista
Conjunto mínimo de datos:
- cabeza, tipo plantilla, representa el punto de inicio.
- cola, tipo plantilla, representa el punto de finalización.
Comportamiento (operaciones) del objeto:
- esVacia(), indica si la lista está vacía.
- tamaño(), cantidad de elementos en la lista.
- cabeza(), retorna el elemento en la cabeza.
- cola(), retorna el elemento en la cola.
- insertarCabeza(v), inserta v en la cabeza.
- insertarCola(v), inserta v en la cola.
TAD Lista
TAD Lista
Conjunto mínimo de datos:
- cabeza, tipo plantilla, representa el punto de inicio.
- cola, tipo plantilla, representa el punto de finalización.
Comportamiento (operaciones) del objeto:
- eliminarCabeza(), elimina elemento de la cabeza.
- eliminarCola(), elimina elemento de la cola.
- insertar(pos,v), inserta v en la posición pos.
- eliminar(pos), elimina el elemento ubicado en pos.
- vaciar(), elimina todos los elementos de la lista.
TAD Lista: esVacia()
Cabeza
Cabeza
1 56 12 7 -9 3 1 NULL
→ falso
Cola
TAD Lista: tamaño()
Cabeza
NULL Cola →0
Cabeza
1 56 12 7 -9 3 1 NULL
→7
Cola
TAD Lista: cabeza()
Cabeza
Cabeza
1 56 12 7 -9 3 1 NULL
→1
Cola
TAD Lista: cola()
Cabeza
Cabeza
1 56 12 7 -9 3 1 NULL
→1
Cola
TAD Lista: insertarCola(v)
Cabeza Cabeza
Cola
Cabeza TAD Lista: insertarCola(v)
1 56 12 7 1 NULL
Cola
Cabeza
1 56 12 7 1 v NULL
Cola
TAD Lista: eliminarCola()
Cabeza Cabeza
Cola
Cabeza TAD Lista: eliminarCola()
1 56 12 7 1 v NULL
Cola
Cabeza
1 56 12 7 1 NULL
Cola
TAD Lista: insertarCabeza(v)
Cabeza Cabeza
Cola
Cabeza TAD Lista: insertarCabeza(v)
1 56 12 7 1 NULL
Cola
Cabeza
v 1 56 12 7 1 NULL
Cola
TAD Lista: eliminarCabeza()
Cabeza Cabeza
Cola
Cabeza TAD Lista: eliminarCabeza()
v 1 56 12 7 1 NULL
Cola
Cabeza
1 56 12 7 1 NULL
Cola
TAD Lista: insertar(pos, v)
Cabeza Cabeza
pos
Cola
TAD Lista: insertar(pos, v)
Cabeza Cabeza
pos
5 NULL v 5 NULL
Cola Cola
Cabeza
TAD Lista: insertar(pos, v)
pos
1 56 12 7 1 NULL
Cabeza Cola
1 56 12 v 7 1 NULL
Cola
TAD Lista: eliminar(pos)
Cabeza Cabeza
pos
Cola
Cabeza
TAD Lista: eliminar(pos)
pos
1 56 12 7 1 NULL
Cola
Cabeza
1 56 12 1 NULL
Cola
TAD Lista: vaciar()
Cabeza
NULL Cola
Cabeza
1 56 12 7 -9 3 1 NULL
Cola
TAD Pila
Pila
●
Colección ordenada de elementos con
restricciones de acceso.
●
Sus elementos solo pueden accederse por un
único lugar, el tope o cima de la pila.
Novela
Enciclopedia
Revista
Libro
Diccionario
Pila
●
Entradas deben ser eliminadas en el orden
inverso al que se situaron en la pila.
●
“último en entrar, primero en salir” → estructura
de datos LIFO (last-in, first-out).
insertar eliminar
cima
(tope)
fondo
Pila
Operaciones principales:
●
Insertar (push):
Añade un elemento y lo ubica en el tope de la
pila.
●
Eliminar (pop):
Extrae el elemento en el tope y lo retira de la
pila.
Pila
●
Ejemplo de uso:
conversión de decimal a binario.
34210 → ?2
Pila
●
Ejemplo de uso:
conversión de decimal a binario.
342 2
142 171 2 34210 → 1010101102
2 11 85 2
0 1 5 42 2
1 2 21 2
0 1 10 2
0 5 2
1 2 2
0 1
Pila
●
Ejemplo de uso:
conversión de decimal a binario.
1 → 1
2 /2 → 0
5 /2 → 1
10 /2 → 0
34210 →
21 /2 → 1
1010101102
42 /2 → 0
85 /2 → 1
171 /2 → 1
342 /2 → 0
Pila
●
Implementaciones:
– Arreglos (implementación estática).
cima
(tope)
cima
(tope)
TAD Pila
●
Secuencia finita de
datos.
insertar eliminar
– Acceso sólo al
elemento tope. cima
(tope)
●
Sin recorridos, acceso
aleatorio restringido.
●
Algoritmos:
fondo
– Insertar, eliminar.
– Vacía, tope.
¿Estado? ¿Interfaz?
TAD Pila
TAD Pila
Conjunto mínimo de datos:
1° 2° 3° 4° Ult
cabeza cola
Cola
●
Entradas deben ser eliminadas en el mismo
orden en el que se situaron en la cola.
●
“primero en entrar, primero en salir” →
estructura de datos FIFO (first-in, first-out).
●
Ejemplos:
– Atención a clientes
en un almacén.
– Gestión de trabajos
en una impresora.
https://www.citrix.com/blogs/2013/06/28/efficient-queuing-but-where/
Cola
Operaciones principales:
●
Insertar (push):
Añadir un elemento por el extremo final de la
cola.
●
Eliminar (pop):
Extraer el elemento ubicado en el extremo
inicial de la cola .
Cola
●
Ejemplo de uso:
simulación de la atención de clientes en un
banco con un solo cajero.
Al banco llega un cliente cada x segundos.
Un cajero atiende un cliente durante y
segundos.
Cola
Segundos = 0
mientras (Segundos < 3600)
si (Segundos % x == 0)
cola.insertar(cliente)
si (Segundos % y == 0)
cola.eliminar()
Segundos++
fin_mientras
Cola
●
Implementaciones:
- Arreglos (implementación estática).
La cola no puede crecer indefinidamente,
requiere un indicador de tamaño máximo.
después de
insertar
después de
eliminar
http://pages.cpsc.ucalgary.ca/~jacobs/Courses/cpsc331/F10/tutorials/tutorial8.html
Cola
●
Implementaciones:
- Lista enlazada (implementación dinámica).
cabeza cola
TAD Cola
●
Secuencia finita de datos.
– Inserción por un extremo, eliminación por el otro.
●
Sin recorridos, acceso aleatorio restringido
●
Algoritmos:
– Insertar, eliminar. ¿Estado? ¿Interfaz?
– Vacía, cabeza.
cabeza cola
TAD Cola
TAD Cola
Conjunto mínimo de datos: