Este documento presenta información sobre listas, pilas y colas. Describe objetos del mundo real que pueden modelarse con estas estructuras de datos, como listas de pacientes o pilas de cajas. Explica definiciones formales de cada estructura y propone TADs para implementarlas con operaciones como crearLista(), insertar(), y borrar(). Finalmente, discute mecanismos de implementación en diferentes lenguajes de programación.
1. Listas, Pilas y Colas.
Eddy Aybar 08-1311
Rina Familia
Estructura de Datos
Sec. 01
Santo Domingo D. N. Universidad Iberoamericana – UNIBE –
2. Con relación a la Estructura LISTA
Indicar objetos reales que se puedan modelar con dicha estructura
• Listas de Ordenes de Visitas
• Conferencia, hospital, Eventos…)
• Lista de Aplicaciones
• Lista de Pacientes
• Lista de Tareas
• Lista de Objetos
• Lista de Compras
3. Varias Definiciones de LISTA
• Se define una lista como una secuencia
de cero o más elementos de un mismo
tipo.
• Una lista es una estructura de datos
secuencial.
• Una lista es una colección homogénea de
elementos con una relación lineal entre
ellos.
4. Proponer un TAD que modele las LISTAS
Nombre:TADLista
Invariante:n/a
Operaciones:
siguiente(pos)
*/con este método se retorna pos +1, si pos es ≥ a fin(),
crearLista()
retorna fin().*/
*/Devuelve un valor del tipo pila preparado para ser
preCond: pos!=0
usado y que contiene un valor de pila vacía. Esta
operación es la misma que la de las listas generales.*/ posCond: retorna pos
preCond: N=0 anterior (pos)
posCond: Lista creada */con este método se retorna pos -1.*/
insertar(crearLista, x pos) preCond: pos!=0
*/mediante este método se insertan datos a la lista ya posCond: retorna pos
creada. Inserta elemento x enpos*/ limpiar(pos)
preCond: pos¡=null */limpia la lista y finaliza fin()*/
posCond: insertar Lista completado (dato preCond: n…n+a, pos =0
insertado en Lista) posCond: lista vacia…
Fin():
*/Retorna la posición del último elemento, en otras
palabras el “fin” de la lista, también se puede considerar
con el tamaño de la lista. Sí la lista está vacía retorna una
posición invalida que podría ser -1.*/
preCond: n/a
posCond: operaciónfinalizada
5. Relacionar el concepto de ventana con el de Lista
Una ventana es un área visual, normalmente de forma
rectangular, que contiene algún tipo de interfaz de
usuario, mostrando la salida y permitiendo la entrada de
datos para uno de varios procesos que se ejecutan
simultáneamente. Las ventanas se asocian a interfaces
gráficas, donde pueden ser manipuladas con un puntero.
En relación con las listas estas se pueden organizar en
manera ordenada y además las ventanas poseen
característica homogéneas al momento de su desarrollo.
Además aquí vemos cuales atributos y operaciones ha de
realizar.
6. Decribir las Implementaciones de Listas
Son listas que tienen un enlace con el elemento siguiente y con el anterior.
Una ventaja que tienen es que pueden recorrerse en ambos sentidos, ya
sea para efectuar una operación con cada elemento o para
insertar/actualizar y borrar. La otra ventaja es que las búsquedas son algo
más rápidas puesto que no hace falta hacer referencia al elemento
anterior. Su inconveniente es que ocupan más memoria por nodo que una
lista simple.
7. Decribir las Implementaciones de Listas
e1.- Vectores
En programación, una matriz o vector (Arrays, en Ingles ) es una
zona de almacenamiento contiguo, que contiene una serie de
elementos del mismo tipo.
Utilizando una estructura de datos estática arreglo para representar e
implementar el TDA LISTAS. Asumamos que los ELEMENTOS que
contiene la LISTA son representados por el tipo ENTERO. La cantidad de
ELEMENTOS que puede contener la LISTA tiene un máximo de n
ELEMENTOS. Por lo que la representación formal de este tipo se define
de la siguiente manera: Tipo LISTA= arreglo [1..n] de ENTEROS; VarL :
LISTA;
8. Decribir las Implementaciones de Listas
e1.- Vectores (cont…)
Operaciones Básica Procedimiento Insertar
LISTA_VACIA (Var L :LISTA) Insertar (Var L :LISTA, p:
var i : ENTERO; POSICIÓN, e : ENTERO)
principio var i : ENTERO;
Para i := 1 hasta n hacer L[ i ]:= 0; principio
fin; Si L [p] <> 0 entonces mientras (i <=n) y ( L [i ] <> 0 )
hacer
Función ES_VACÍA(L :LISTA) : LÓGICO principio
principio sig := l[p]; l[i] := e; e := sig;
Si L[ 1 ] = 0 entonces ES_VACÏA := fin;
Verdad
l [ i ] := e;
Sino ES_VACÏA := Falso;
fin;
fin;
9. Decribir las Implementaciones de Listas
e2.- Listas Doblemente Enlazadas
Una de las ventaja que tienen es que pueden recorrerse en ambos sentidos, ya
sea para efectuar una operación con cada elemento o para insertar/actualizar y
borrar.
Otra de las ventaja es que las búsquedas son algo más rápidas puesto que no
hace falta hacer referencia al elemento anterior.
Su inconveniente es que ocupan más memoria por nodo que una lista simple.
10. Mecanismos para implementar las listas.
Según los lenguajes de Programación
En el lenguaje C se utiliza los
llamados punteros para representar
esta estructura de datos.
En java se encuentra un paquete completo
en java.util de donde se pueden utilizar las
listas, como un tipo abstracto de datos, este
tipo de estructura de datos también se
utiliza a partir y/o como una interfaz.
11. Describir cómo los lenguajes que no manejan
apuntadores simulan las listas doblemente enlazadas
• Cada nodo apunta al siguiente y al anterior.
• Duplica el uso de la memoria necesaria para los punteros.
• Duplica el coste de manejo de punteros al insertar y
eliminar.
• La eliminación se simplifica.
• No es necesario buscar el elemento anterior.
12. Con relación a la Estructura PILA
Indicar objetos reales que se puedan modelar con dicha estructura
Caja de Objetos
Este método de pila fue Memoria de un Computador
propuesto en 1955 y dos años
después patentado por Fiedrich
L. Bauer, quién recibió en 1988
el premio "IEEE Computer Montar y Desmontar cajas de un Camión
Society Pioneer Award" por su
trabajo en el desarrollo de dicha
estructura de datos. Celdas de Baterías
• Sirve para Indicar cuantas celdas le quedan
a una batería
13. Varias definiciones de PILA
• Una pila es un caso especial de lista en la cual
todas las inserciones y supresiones tienen
lugar en un extremo determinado llamado
tope.
• Una pila es un tipo especial de lista abierta en
la que sólo se pueden insertar y eliminar
nodos en uno de los extremos de la lista.
• Una Pila es una lista de elementos de la cual
sólo se puede extraer el último elemento
insertado.
• A las pilas se les llama también listas LIFO
(last-in first-out) o listas “primero en
entrar, primero en salir”.
• Montón o cúmulo que se hace poniendo una
sobre otra las piezas o porciones de que
consta algo.
14. Proponer un TAD que modele las PILAS
Nombre: TAD Pila insertarPila(crearPila)
Invariante: n<>0 */ mediante este método se insertan datos a la pila ya
creada. Con las pilas se usa el método push para insertar*/
Operaciones:
Precondiciones: pila <> null
Pos condiciones: insertarPila completado
crearPila() (datos insertados en pila)
*/ Devuelve un valor del tipo pila preparado
para ser usado y que contiene un valor de borrarPila()
pila vacía. Esta operación es la misma que la */con este método se elmina cierta pila de datos */
de las listas generales.*/
Precondiciones: pila <> null
Precondiciones: N=0
Pos condiciones: pila eliminada
Pos condiciones: pila creada
15. Mecanismos para implementar las pilas a través de Listas y Vectores.
Según los lenguajes de Programación.
Declaraciones de tipos para manejar pilas en C
Los tipos que definen normalmente para manejar pilas serán casi los
mismos que para manejar listas, tan sólo se debe cambiar algunos
nombres:
typedef struct _nodo { int dato; struct _nodo *siguiente; }
tipoNodo; typedef tipoNodo *pNodo; typedef tipoNodo *Pila;
16. Con relación a la Estructura COLA
Indicar objetos reales que se puedan modelar con dicha estructura
• Filas de los Bancos
• Colas de Impresión
• Colas para salidas de Transportes
• Filas en las Escuelas
17. Varias definiciones de COLA
• Es una estructura de datos, caracterizada por ser una secuencia de elementos
en la que la operación de inserción push se realiza por un extremo y la operación
de extracción pop por el otro.
• Es también una estructura de datos lineal en donde las eliminaciones se realizan
por uno de sus extremos que normalmente se llama frente, y las inserciones se
realizan por el otro extremo que normalmente se llama final.
• Es un método de estructuración datos, que permite almacenar y recuperar
datos.
18. Proponer un TAD que modele las COLAS
Nombre: TAD COLA
Invariante: n/a
Operaciones:
crearCola()
*/ Devuelve un valor del tipo cola preparado para ser usado y que
contiene un valor de pila vacía. Esta operación es la misma que la de las
listas generales.*/
Precondiciones: N=0
Pos condiciones: cola vacia creada
insertarCola(crearCola)
*/ mediante este método se insertan datos a la cola ya creada. */
Precondiciones: cola <> null
Pos condiciones: datos insertados en cola, cola insertada.
borrarCola()
*/con este método se elmina cierta cola de datos */
Precondiciones: cola != 0
Pos condiciones: cola eliminada
19. Particularidades de un TAD COLA con Prioridades.
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 elemento
El TAD Cola de Prioridad tiene la misma interfaz que el TAD Cola pero distinta semántica.
• La diferencia semántica está en que el elemento eliminado de la lista no es, necesariamente, el
primero que fue añadido. Más bien, es el elemento de la cola que tiene la prioridad más alta.
En caso de igualdad se sigue la regla FIFO, de dos elementos con igual prioridad sale primero el
que primero entro.
La Prioridad de los elementos depende de la
cantidad que haya en la cola.
20. Describir las implementaciones de COLAS
Con Vectores Circulares.
La cola circular propone tratar el
arreglo como un circulo donde
aLength se hace igual a aSize, el
siguiente elemento es el de índice 0.
Esto permite utilizar todos los
espacios que quedan libres en el
arreglo luego de realizar
eliminaciones de nodos.
21. Describir las implementaciones de COLAS
Con Vectores Circulares. (cont…)
public class Cola {
private static int max = 100;
private Object elementos[];
private int frente, post;
} // fin clase Cola
22. Esta ha sido una presentación
para la asignatura de Estructura de Datos.
Prof.: Rina Familia
Universidad Iberoamericana – UNIBE –
Eddy Aybar 08-1311