Documento de The Globe Oposiciones sobre tipos abstractos y estructuras de datos. El Pdf, diseñado para oposiciones de informática, aborda algoritmos, organizaciones de ficheros y formatos de información, con un índice detallado y explicaciones claras.
Ver más58 páginas


Visualiza gratis el PDF completo
Regístrate para acceder al documento completo y transformarlo con la IA.
ÍNDICE
..........
2
3
5
7
8
11
13
14
15
15
15
16
25
29
29
33
35
37
42
43
43
45
50
50
53
53
57
PABLO ARELLANO
www.theglobeformacion.com
Página 2
44B2T3
1. TIPOS ABSTRACTOS Y ESTRUCTURAS DE DATOS
Para empezar, hay que precisar la diferencia entre tres conceptos muy relacionados, pero formalmente distintos, aunque sea frecuente utilizar el mismo nombre para casos concretos y muy importantes. Se trata de los conceptos de "Tipo de Datos", "Tipo abstracto de Datos" y "Estructura de Datos". Las definiciones se pueden establecer de la siguiente forma:
Un Tipo de Datos (TD) es el conjunto de valores que puede tomar una variable.
Los datos se pueden clasificar en dos tipos:
Los tipos de datos constituyen un primer nivel de abstracción, ya que no se tiene en cuenta cómo se implementan o se representa realmente la información sobre la memoria de la máquina. Para el usuario, el proceso de implementación o representación es invisible.
Un Tipo Abstracto de Datos (TAD) representa una abstracción donde se destacan los detalles de la especificación (el qué) y se ocultan los detalles de la implementación (el cómo).
Así un TAD es representado por su interfaz la cual muestra las operaciones que se pueden realizar sobre ese tipo de datos sin importar la implementación concreta.
Así podemos definir un TDA Lista, un TDA Arbol, un TDA Pila o un TDA Cola, independientemente de las estructuras de datos usadas para su implementación.
Una Estructura de Datos (ED) es una forma de organizar un conjunto de datos elementales con el objetivo de facilitar la manipulación de estos datos como un todo o individualmente, es decir, es la representación o implementación de un TAD.
PABLO ARELLANO
www.theglobeformacion.com
Página 3TAI
1ª CLASIFICACIÓN: Según cómo se ubiquen en la memoria del ordenador:
2ª CLASIFICACIÓN: Según la variabilidad de su tamaño durante la ejecución de un programa:
Ventajas e inconvenientes de las agrupaciones estáticas frente a las agrupaciones dinámicas:
3ª CLASIFICACIÓN: Según los tipos de datos de contengan:
PABLO ARELLANO
www.theglobeformacion.com
Página 4B2T3
boolean
char
Simples
integer
real
ESTÁTICAS
Strings
Arrays
Compuestas
Conjuntos
Registros
Estructuras
de datos
Arrays
Listas
Lineales
Pilas
DINÁMICAS
Colas
Árboles
No lineales
Grafos
Colección de elementos homogéneos (de igual longitud y tipo) entre los que existe una relación lineal determinada por la posición del elemento dentro de la estructura, también se las conoce con el nombre de Array.
Los arrays son estructuras de datos complejas que se caracterizan porque sus unidades homogéneas de información se ubican en posiciones contiguas de memoria.
Los arrays dependiendo del lenguaje de programación pueden ser estáticos (de tamaño fijo determinado en tiempo de compilación) y dinámicos (el tamaño puede variar en tiempo de ejecución).
Un array viene definido por:
PABLO ARELLANO
www.theglobeformacion.com
Página 5B2T 3
en la que se encuentra el elemento dentro de la estructura. Un índice comienza en 0 y termina en tamaño-1.
Podemos distinguir varios tipos de arrays:
Índice 1| elemento = 0 - c[o]
-7
c[1]
0
C[2]
3
C[3]
8
C[4]
5
Longitud del array = 10
C[5]
-4
C[6]
6
C[7]
6
Índice n-ésimo elemento = n-1
C[8]
1
2
Índice último elemento C[9]
=0 longitud -1
Índice: expresión entera: 0 <= índice <= longitud-1
nx m
arreglo [3][4]
m = Columnas
0
n = Filas
1 Posiciones filas
2
0
1 2 3
Posiciones Columnas
int a[10] ;
/* Array de una dimension
*/
int b [3] [5] ;
/* Array de dos dimensiones
*/
int c[6] [4] [2]; /* Array de tres dimensiones
*/
a
b
C
PABLO ARELLANO
www.theglobeformacion.com
Página 6
Cada elemento de un arreglo está asignado a una posición concreta del arreglo, designada por un índice.
Respecto a la implementación del array se establece el número de elementos que forman la estructura, que siempre habrá que fijarlo, de alguna de las siguientes maneras:
Las operaciones basicas que se realizan sobre un array son: crear el array, insertar/modificar/eliminar elementos, buscar un elemento concreto, ordenar los elementos del array y contar los elementos que contiene.
La estrategia utilizada para la búsqueda y ordenación de elementos de un vector se verá en un apartado posterior.
Las estructuras o registros son agrupaciones heterogeneas, contiguas y estáticas.
Los elementos contenidos en la agrupación pueden ser de distintos tipos y se denominan campos, y suelen estar relacionados con la información referente a un objeto concreto.
Ejemplos:
Una persona (Nombre, edad, DNI ... )
Un libro (Título, autor, precio, disponible/agotado ... )
Los registros o estructuras definen nuevos tipos de datos que podemos utilizar a lo largo de nuestro programa.
Es decir, una vez declarada la estructura podemos utilizar y declarar variables de ese nuevo tipo (de la misma forma que si declarásemos variables de tipo entero o real).
La manera de acceder a cada uno de los campos es mediante el operador de acceso 2.
Ejemplo:
//Definición registro
struct Nombre {
Tipo1 Campo1; Tipo2 Campo2; ...
};
//Declaración variable
NombreVar : Nombre
//Asignación
NombreVar . Campo1 = valor;
PABLO ARELLANO
www.theglobeformacion.com
Página 7B2T3
Los registros tienen como característica el anidamiento de estructuras. Las estructuras se pueden anidar, es decir, uno de los campos de una estructura puede ser a su vez otra estructura.
Una lista es un TAD que se define como un conjunto lógico de elementos homogéneos (nodos) entre los que existe una relación lineal, considerados a cada uno de éstos como unidad básica de información dentro de la estructura. Cada elemento de la estructura puede estar formado por uno o varios campos.
Nos permite almacenar datos de una forma organizada, al igual que los vectores pero, a diferencia de estos, esta estructura es dinámica, por lo que no tenemos que saber "a priori" los elementos que puede contener. Es posible utilizar una estructura estática aunque no es lo habitual.
Lista = colección de elementos homogéneos entre los que existe una relación lineal:
Una lista es una estructura de datos que cumple:
Lista
Nodo 1
Nodo 2
Nodo n
NODOS Y ENLACES
Las operaciones sobre una lista son: crear, insertar un elemento, buscar un elemento (si la lista es dinámica solo es posible la búsqueda secuencial) y eliminar un elemento.
De entre estas operaciones la de mayor complejidad técnica es la de inserción, existiendo 3 casuísticas.
PABLO ARELLANO
www.theglobeformacion.com
Página 8