Unidad 1: Fundamentos de
estructura de datos
Tipos de datos
Un tipo de dato es una coleccin de valores
Han sido estudiados los tipos de datos que implementan
lenguajes como C++ o Java (Boolean, Integer,
Character...)
Estos tipos son conocidos como tipos simples
Estos tipos pueden ser utilizados en programas sin
necesidad de que los detalles sobre su implementacin
sean conocidos
TAD
Se pueden encontrar varias definiciones para el concepto de Tipo
Abstracto de Datos (TAD):
Conjunto de Operaciones.
Modelo matemtico con una serie de operaciones definidas en ese
modelo.
Tipo de datos definido de forma nica mediante un tipo y un conjunto de
operaciones definidas sobre el tipo.
El conjunto constituido por la estructura de datos y las operaciones
asociadas a la misma que permite modelar el comportamiento de una
entidad real.
Definicin de TAD
Un Tipo Abstracto de Datos es un conjunto de valores y
de operaciones definidos mediante una especificacin
independiente de cualquier representacin.
TAD
Un Tipo Abstracto de Datos es una abstraccin donde se encuentran
encapsulados los estados potenciales en los que se puede encontrar
una entidad de ese tipo y las operaciones que pueden realizarse
sobre ella.
TAD
Como se ha mencionado, se trata de una abstraccin. No
se incluyen detalles sobre la implementacin de las
operaciones.
Estructuras de datos
En muchos textos, pueden encontrarse confundidos los
trminos TAD y Tipo de Datos, as como TAD y
Estructura de Datos.
Estructura de Datos: Conjunto de variables que se
encuentran relacionadas.
Con Estructura de Datos, por tanto, nos referimos a la
implementacin fsica de un TAD
Caractersticas de un TAD
Ocultamiento. El TAD tiene un comportamiento de caja negra
dado que quien lo usa sabe qu puede hacer pero no cmo lo hace.
Caractersticas de un TAD
Compilacin separada: El resultado de la compilacin del TAD
se pone a disposicin de los usuarios en forma de unidades que
pueden utilizarse como si estuvieran predefinidas en el lenguaje de
programacin.
Colas
Concepto
Modelo grfico
Pilas- concepto
Una pila es una agrupacin de elementos de
determinada naturaleza o tipo (datos de personas,
nmeros, procesos informticos, automviles,
etc.) entre los que existe definida una relacin de
orden (estructura de datos).
Pilas- concepto
En funcin del tiempo, algunos elementos de
dicha naturaleza pueden llegar a la pila o salir de
ella (operaciones/acciones). En consecuencia
el estado de la pila varia.
Pilas- concepto
Una pila presenta el comportamiento LIFO (Last
Input First Output) y el criterio de ordenacin se
establece en sentido inverso al orden de llegada.
As pues, el ultimo elemento que llego al conjunto
ser el primero en salir del mismo, y as
sucesivamente.
apilar
5
4
1
7
2
9
8
3
Cima
Fondo
Cola - Concepto
Una cola es una agrupacin de elementos de
determinada naturaleza o tipo (datos de personas,
nmeros, procesos informticos, automviles,
etc.) entre los que existe definida una relacin de
orden (estructura de datos).
Cola - Concepto
En funcin del tiempo, algunos elementos pueden
llegar a la cola o salir de ella (operaciones /
acciones). En consecuencia el estado de la cola
varia.
Cola - Concepto
Una cola presenta comportamiento FIFO (First
Input First Output) y se respeta como criterio de
ordenacin el momento de la llegada: el primer
elemento de la cola, ser el que primero llego a
ella y, en consecuencia, el primero que saldr, y
as sucesivamente.
Fin
7 3 1 2 6 9 0 8 11 4 3 6
Desencolar
Encolar
Figura 2. Modelo grfico de cola
Implementacin de un TAD
Es importante comprender la diferencia entre un TAD y su
implementacin.
Las implementaciones no dejan de ser importantes, y su eleccin es
crtica.
Al final, el usuario no debe preocuparse de cmo est implementado
un TAD. Su nica preocupacin debe ser el uso del mismo
Implementacin de un TAD
Cmo debe implementarse un TAD?
Deben considerarse detalles acerca de la complejidad
espacial de las estructuras y temporal de las operaciones
Preguntas que debe formularse el programador:
Cmo ser la estructura de datos? Cmo crecer?
Segn lo anterior y otras consideraciones cul ser el costo de
una implementacin u otra para cada operacin?
Declaracin de un TAD
Especificacin algebraica, con dos componentes
1. Signatura (Sintaxis) se compone de:
a) Definicin de los posibles valores del tipo
b) Operaciones definidas
OPERACIONES
INIC:BOOLEAN
BOOLEAN
NOT:BOOLEAN
BOOLEAN
OR:BOOLEAN x BOOLEAN
BOOLEAN
AND:BOOLEAN x BOOLEAN
BOOLEAN
OPERACIONES
INIC:NAT
NAT
CERO:
NAT
ESCERO:NAT
BOOLEAN
SUCC:NAT
NAT
SUMA:NAT x NAT
NAT
IGUALES:NAT x NAT
NAT
AXIOMAS
INIC(X)=X
CERO()=0
ESCERO(CERO)=TRUE
ESCERO(SUCC(X))=FALSE
SUMA(CERO,X) = X
SUMA(SUCC(X),Y) = SUCC(SUMA(X,Y))
SUCC(X) = SUMA(X,1)
IGUAL(X,CERO) = IF ESCERO(X) THEN TRUE ELSE FALSE
IGUAL(CERO,SUCC(X)) = FALSE
IGUAL(SUCC(X),SUCC(Y)) = IGUAL(X,Y)