Title: Tipos de Datos abstractos
 1Tipos de Datos abstractos
- Estructuras de Datos 
 - MC Beatriz Beltrán Martínez
 
  2Características
- Los programas actúan sobre la información. 
 - La cual se dispondrá de una manera particular, 
organizada en forma que se faciliten las 
operaciones que conforman el algoritmo.  - El término Estructura de Datos refiere a dos 
partes de la Organización de la Información. 
  3Características
- Organización Lógica Involucra todo aquello que 
tenga que ver con las partes de cada elemento, 
tipo de los elementos, referencia a alguno o 
algunos elementos, cantidad de los elementos que 
contiene la estructura, relaciones entre los 
elementos, etc.  - Organización Física Se refiere a todo aquello 
que tenga que ver con la ubicación de la 
información en la memoria y la forma de 
almacenarla de acuerdo a sus dominios. 
  4Características 
 5Características
Algoritmo
ED
Plantea un concepto más amplio de lo que es el 
tipo 
 6Ejemplo 
A1 A2 A3 A4 A50
Organización Lógica Arreglo de un 
índice Inicio 1, Fin 50 Tipo de elementos 
Entero   Organización Física Almacenamiento 
Secuencial Dirección Inicial dir(A) Tamaño del 
elemento 2 bytes Número de elementos 50 
 7Considerar
- La eliminación de un elemento se puede pensar en 
dos formas  - Por desplazamiento. 
 - Por marca. 
 - Podemos observar en los anteriores algoritmos que 
el segundo es más rápido, mientras que el primero 
se limita a ocupar el espacio mínimo.  - Cantidad de memoria que consume la estructura 
contra tiempo de realización de una operación. 
  8Tipos de ED y sus dominios
- A partir de las diferentes formas que existen 
para organizar la información tenemos que en 
cuanto a la Organización Lógica los diversos 
lenguajes de programación proporcionan los 
elementos básicos de información y constructores 
para definir ED.  - Se tienen tipos básicos, pero también se tienen 
constructores para formar diferentes estructuras. 
  9Tipos de ED y sus dominios
- El REGISTRO proporciona heterogeneidad en este 
producto cartesiano por ejemplo  - Sea x un REGISTRO con los campos 
 - y de tipo ENTERO 
 - z de tipo REAL 
 -  tiene como dominio Dom (x)  Z X R, cuyos 
elementos son de la forma (a, b) a?Z y b?R. 
  10Tipos de ED y sus dominios
- En general, tenemos que por ejemplo 
 - Sea k un REGISTRO con los campos 
 - l de tipo booleano 
 - m de tipo x 
 - Dom(k)  B X Dom(x) 
 - Para poder generalizar esto último, se deben 
considerar los elementos de referencia, para ello 
consideremos que en el siguiente ejemplo el 
operador  define tales elementos. 
  11Tipos de ED y sus dominios
- Sea p un REGISTRO con los campos 
 - xc, yc de tipo Real 
 - Sea l-p un REGISTRO con los campos 
 - punto de tipo p 
 - sp de tipo l-p 
 - Dom (l-p) define un dominio recursivo 
 - Dom (l-p)  Dom (p) x dom (l-p) 
 - Los elementos de Dom (l-p) son de la forma 
Dom(l-p)  nil U Dom (l-p). 
  12Organización física
- la organización física tiene que ver con el 
lugar y la forma dentro de la memoria donde 
se almacena la información.  - Tanto el lugar como la forma son 
representados por el espacio el cual puede ser 
fijo o variable.  - De lo anterior, se tiene que las E.D. se 
clasifican en  - Estáticas (Espacio Fijo) 
 - Dinámicas (Espacio Variante)
 
  13Memoria Dinámica y Estática
- Catálogo de algunas estructuras de datos 
conocidas, dinámicas  - Lista simple ligada 
 - Árboles 
 - Lista doblemente ligada 
 - Estáticas 
 - Arreglos 
 - Pila 
 - Cola
 
  14Arreglos
- Organización Lógica 
 - Dimensiones. 
 - Límite inferior y superior de cada dimensión. 
 - Tipo de elementos.  
 - Organización Física 
 - Dirección inicial (de un intervalo de memoria) 
 - Tamaño de los elementos. 
 - Orden de las dimensiones. 
 - Desplazamientos .
 
  15Arreglos
- Las operaciones con los arreglos son 
 - Recuperación de uno de sus elementos. 
 - Actualización de un elemento. 
 - Ambas operaciones se realizan en función de los 
índices que señalan la ubicación del elemento. 
  16Arreglos
- Sea A un ARREGLO 1..20 con elementos de tipo 
Carácter.  - Reserva un intervalo de memoria de 20 lugares 
consecutivos a partir de una dirección que 
denotaremos por DirA. 
DirA DirA1 DirA2 DirA19
A1 A2 A3 A20
Intervalo de memoria DirA, DirA19 
 17Polinomio de Direccionamiento
- Suponiendo que el direccionamiento sea a nivel de 
bytes.  - Las operaciones se reducen al cálculo del 
Polinomio de Direccionamiento (Pd).  - El Pd obtiene la dirección absoluta de un 
elemento del arreglo dados sus índices.  
  18Polinomio de Direccionamiento
- Por ejemplo 
 - Si nos referimos a A7 Pd (A7)  DirA  6 Pd 
(Ax)  DirA  x-1.  - En general se tiene que si B es un ARREGLO 1..5 
 con elementos de tipo T  - Pd (Bx)  DirB  (x-1) lt con lt igual a la 
longitud en bytes asignada al tipo T. 
  19Polinomio de Direccionamiento
- Para almacenar los elementos de una matriz en la 
memoria que es lineal, podemos hacerlo por 
columnas o por renglones.  - Matriz de 3X4 
 -  11 12 13 14 
 -  21 22 23 24 
 -  31 32 33 34
 
  20Polinomio de Direccionamiento
- Por columnas 
 -  Dirección Elemento 
 -  100dir 11 
 -  101dir1 21 1ª. Columna 
 -  102dir2 31 
 -  103dir3 12 
 -  104dir4 22 2ª. Columna 
 -  105dir5 32 
 -  106dir6 13 
 -  107dir7 23 3ª. Columna 
 -  108dir8 33 
 -  109dir9 14 
 -  110dir10 24 4ª. Columna 
 -  111dir11 34
 
  21Polinomio de Direccionamiento
- Para la dirección del elemento Ci j y el 
almacenamiento por columnas, el PD es  - pd(Ci j)dirCn(j-1)(i-1)T 
 - Si el almacenamiento se hubiese realizado por 
renglones, entonces el PD quedaría como  - pd(Ci,j)dirCm(i-1)(j-1)T
 
  22Polinomio de Direccionamiento
- El caso más general, que es la declaración 
 - Tipo E inf1,sup1 inf2,sup2 , infn,supn 
 -  donde 
 - infi, supi es el límite inferior y límite 
superior de la i-ésima dimensión 
respectivamente.   - Sea ri el rango de la i-ésima dimensión definido 
como ri  supi-infi1, y T el tamaño en bytes de 
Tipo. 
  23Polinomio de Direccionamiento
- Entonces el PD es 
 - pd(Ek1,k2,,kn)  dirE  r1  r2  r3    
rn-1  (kn-infn)  r1 r2 r3    rn-2  
(kn-1-infn-1)    r1  (k2-inf2)  (k1-inf1)  
T  - Para referenciar un elemento que se encuentra en 
una estructura utilizaremos la dirección inicial 
del registro y los tamaños en bytes de cada uno 
de los campos del registro de acuerdo a su tipo. 
  24Polinomio de Direccionamiento
- Entonces la fórmula quedaría de la siguiente 
manera  - Sea 
 - estructura R  
 - x1  T1 
 - x2  T2 
 -  
 - xn  Tn 
 -  
 -  y sea dirR la dirección inicial de R.
 
  25Multipila
- En este caso se administran varias pilas. 
 - La estructura de pila común hereda 
características del almacenamiento estático y por 
este motivo tendremos  - límite inferior (LI) 
 - límite superior (LS) 
 - posición del siguiente lugar libre (T)
 
  26Multipila
- Las operaciones más comunes que se consideran 
para su manejo son  - inserción de un elemento 
 - eliminación (extracción) de un elemento 
 - verificación de pila vacía o llena. 
 - En particular se acostumbra anunciar saturación 
cuando la estructura no admite más elementos. 
  27Multipila
- Considérese 
 - LI  arreglo 1..n1 de enteros 
 - T  arreglo 1..n de enteros 
 - M  arreglo 1..MAX de un Tipo 
 -  tal que 
 - LIk representa el límite inferior de la k-ésima 
pila.  - Tk representa la posición del siguiente lugar 
libre de la k-ésima pila.  - LIn1 es el límite superior de la n-ésima pila.
 
  28Multipila
- Al inicio todas las pilas están vacías, entonces 
el arreglo de límites inferiores y el de topes 
coinciden, excepto el último elemento del arreglo 
de límites inferiores.  - Por ejemplo, suponga que se quieren manejar 4 
pilas con capacidad para 4 elementos cada una.  -  n4 y MAX16. 
 - Al inicio el contenido de los arreglos LI y T 
quedaría de la siguiente manera 
  29Multipila
- LI11 T11 
 - LI25 T25 
 - LI39 T39 
 - LI413 T413 
 - LI517 
 - Al realizar la operación de inserción en alguna 
de las pilas, se necesita  - El número de la pila y 
 - El dato a insertar. 
 
  30Multipila
- Para insertar se deben realizar las siguientes 
operaciones  - MT1dato // insertar dato 
 - inc(T1,1) // incrementar el tope de la pila 
número 1  - Si deseamos insertar los datos -4 y -8 en la pila 
número 3, entonces debemos incrementar en uno el 
tope de la pila 3 por cada inserción. 
  31Multipila
- Cuando se pretende almacenar en la k-ésima pila y 
se tiene que TkLIk1, es decir, el tope de 
la k-ésima pila coincide con el límite inferior 
de la siguiente pila (k1-ésima pila), tenemos 
una saturación local. 
  32Multipila
- Por ejemplo, suponga que la pila 3 está saturada. 
 - En este caso se pueden llevar a cabo los 
siguientes pasos  - Buscar j tal que LIj1 - Tj gt0 y k-j sea 
mínimo.  - sino existe j entonces tenemos una saturación 
total.  - si existe entonces pasar al siguiente paso.
 
  33Multipila
- Mover una posición los elementos de las pilas k1 
hasta j hacia arriba cuando j gt k o bien, desde 
los elementos k hasta j1 hacia abajo cuando j lt 
k.  - Insertar el elemento. 
 - Actualizar LI y T
 
  34Multipila
- Cabe mencionar que la pila j (pila seleccionada) 
es aquella pila que tiene al menos un lugar vacío 
(LIj1-Tj gt 0 o bien LIj1 ltgtTj ) y 
además es aquella pila que se encuentra más cerca 
de la pila saturada (k-j sea mínimo), entonces 
k-j nos da la distancia entre k y j.  - Al darse estos movimientos de los elementos de 
las pilas, estamos modificando tanto los LI de 
las pilas como sus topes, por lo tanto se deben 
actualizar.  
  35Multipila
- Cuando los movimientos sea hacia arriba se 
incrementan los LI y los topes de las pilas que 
se mueven, y cuando los movimientos son hacia 
abajo se decrementan.  - En el caso de la eliminación, ésta operación se 
realiza de la misma manera que para una pila 
normal, con la diferencia de que necesitamos un 
parámetro para esta operación el número de la 
pila de donde queremos eliminar.