Este documento describe diferentes estructuras de datos como listas, pilas y colas. Define cada una y propone TAD (tipos abstractos de datos) para modelarlas. Explica cómo se pueden implementar usando vectores y listas enlazadas. También describe objetos del mundo real que pueden modelarse con estas estructuras y cómo diferentes lenguajes de programación las soportan.
2. LISTAS
a) Indicar objetos reales que se puedan modelar con dicha estructura.3
LISTA DE MATRICULAS INSCRITAS EN UNA CLASE (10-1300, 12-3342, 09-2333, ….)
LISTA DE SUPERMERCADO (AZUCAR, CAFÉ, ARROZ, …..)
LISTA DE INVITADOS EN LA FIESTA (JAVIER, JUNIOR, CARLOS, FELIZ, …)
b) Presentar varias definiciones de la misma.
Una lista es una estructura de datos secuencial.
Es un tad que nos permite almacenar datos de una forma organizada
Una pila es una estructura de datos a la cual se puede acceder solo por un extremo de la misma.
c) Proponer un TAD que modele las LISTAS.
TAD<LISTA>
TIPO: UNIDIMENSIONAL
{inv: N pertenece Z+}
Operaciones:
◦ Crear_vector int > vector
◦ Asignar_valores vector x int > vector
◦ Ordenar_vector vector x int > vector
◦ Determ_centrovector x int > int
d) Relacionar el concepto de VENTANA con el de Lista.
e) Describir las implementaciones de Listas:
Ventanas muestra información sobre todas las ventanas de las áreas de trabajo de CDE. Una vez arrancada, la lista de ventanas
se actualizará de manera dinámica.
e1.- Vectores
e2.- Listas doblemente enlazadas
f) Describir los mecanismos mediante los cuales los lenguajes de programación
permiten implementar las listas.
Array
ArrayList
g) Describir cómo los lenguajes que no manejan apuntadores simulan las listas doblemente enlazadas.
Se puede asignar estáticamente una serie de nodos de la lista, y luego usar índices enteros en el conjunto como su
"anterior" y "siguiente" los valores de cada nodo, en lugar de punteros.
3. PILAS
a) Indicar objetos reales que se puedan modelar con dicha estructura.
Las cajas que entras en un camión.
b) Presentar varias definiciones de la misma.
Una pila es una estructura de datos a la cual se puede acceder solo por un extremo de la misma.
Una pila, es una estructura de datos en la que el último elemento en entrar es el primero en salir, por lo
que también se denominan estructuras LIFO (Last In, FirstOut).
Es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO
(del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos.
c) Proponer un TAD que modele las PILAS.
DEFINITION MODULE Pila;
TYPE PILA;
TIPO_OPERACION= PROCEDURE (ITEM);
PROCEDURE Error(): TIPO_ERROR;
PROCEDURE Crear(): PILA;
PROCEDURE Apilar(VAR p: PILA;x: ITEM);
d) Describir los mecanismos mediante los cuales los lenguajes de programación
permiten implementar las pilas a través de listas y vectores.
Un array bidimensional o vector lo creamos con 10 posiciones enumeradas del 0 al 9, la variable inicio
guarda una posición antes en la cual se encuentra el primer elemento y la variable fin guarda la posición en
donde se encuentra justamente el ultimo elemento.
Una clase Vector se puede utilizar para guardar cada elemento de la cola.
4. COLAS
a) Indicar objetos reales que se puedan modelar con dicha estructura.
La cola de un autobus.
La cola de la impresora
b) Presentar varias definiciones de la misma.
Acceso de inserción por un extremo y de eliminación por el otro extremo
Una cola es una estructura de datos donde el primer elemento en entrar es el primero en salir, también
denominadas estructuras FIFO (First In, FirstOut).
Es una estructura de datos en la que el ultimo elemento en entrar es el primero en salir
c) Proponer un TAD que modele las COLAS.
TAD <COLAS>
TIPO: UNIDIMENSIONAL
{inv: N pertenece Z+}
Operaciones:
COLA_CREAR x int > vector
COLA_INSERTAR vector x int x int > vector
COLA_EXTRAER vector x int > vector
COLA_HAYELEMENTOS vector > boolean
COLA_ELIMINAR vector x int > vector
COLA_LLENAR vector x int > vector
COLA_VACIAR vector x int > vector
d) Describir las particularidades de un TAD COLA con prioridades.
Se trata de construir el TAD cola de prioridad con una implementación no acotada con cabecera.
En una cola de prioridad los elementos están ordenados dependiendo de su prioridad, de manera que esté
disponible (para las operaciones Frente y Extraer ) el elemento de máxima prioridad. En caso de igualdad se
sigue la regla FIFO, de dos elementos con igual prioridad sale primero el que primero entró. Esto se puede
conseguir bien insertando ordenadamente y extrayendo el primer
e) Describir las implementaciones de COLAS con vectores circulares.
En las colas circulares debe prestarse atención a que los índices no se crucen. COLA POR VECTORES.
Si se representa una cola con un vector, las rutinas que implementan las operaciones del TAD tienen la
siguiente complejidad.