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.