Este documento describe diferentes tipos de estructuras de datos, incluyendo tipos de datos simples y estructurados, así como estructuras de datos específicas como arrays unidimensionales, matrices bidimensionales, pilas y colas. También explica dos algoritmos de ordenación: el método de la burbuja y el método de inserción.
2. Estructuras de datos
Clasificación de los tipos de datos según su
estructura:
Simples:
Estándar (entero, real, carácter, booleano)
No estándar (enumeración, subrango)
Estructurados:
Estáticos (arrays, cadena, registros, ficheros, conjuntos) Pilas
Dinámicos (punteros, listas enlazadas, árboles, grafos) Colas
3. Los tipos simples son cuando cada dato representa un único elemento:
Estándar: Están definidos por defecto por el lenguaje.
No estándar: Tipos simples definidos por el usuario.
Los tipos de datos estructurados, son cuándo un dato es una estructura
que se construyen a partir de otros complementos.
Estáticos: Ocupan un tamaño de memoria fijo, que tengo que definir antes de
declararlo.
Dinámicos: La estructura no ocupa un tamaño fijo de memoria, sino que ocupa
la memoria que ocupa en cada momento. Se van a manejar a través del tipo
de dato puntero.
Puntero: Es una variable cuyo contenido es una dirección de memoria y esa dirección
de memoria corresponde a la dirección de memoria de otra variable, que es la
variable apuntada. Según el tipo de datos de la variable apuntada variará el tipo de
puntero. A través de una variable de tipo puntero podemos establecer la conexión o
enlace entre los elementos que van a formar la estructura, y según se realizan estos
enlaces vamos a tener diferentes tipos de estructuras (listas enlazadas, árboles,
grafos).
Las pilas y las colas son 2 estructuras de datos con un funcionamiento
especial, que pueden implementarse con memoria estática o dinámica.
4. ARRAYS UNIDIMENSIONALES:
VECTORES.
Un array unidimensional, o lineal, o vector, es un conjunto finito y ordenado
de elementos homogéneos. Es finito porque tiene un número determinado
de elementos. Homogéneo porque todos los elementos almacenados van
a ser del mismo tipo. Ordenado porque vamos a poder acceder a cada
elemento del array de manera independiente porque va a haber una
forma de referenciar cada elemento. Para referenciar cada elemento de
un array vamos a usar índices (valor que directa o indirectamente
referencia la posición del array).
Los índices tienen que ser de cualquier tipo de datos escalar (entre los que
se puede definir un orden, y que entre 2 elementos consecutivos no puede
haber infinitos elementos), aunque normalmente como índices se van a
utilizar números enteros. Para referenciar un elemento de un array
usaremos el nombre del array y entre corchetes [ ] el índice que determina
la posición de ese elemento en el array.
5. Ejemplo: Se almacenan los nombres
de los amigos
Asignación de un dato a una posición concreta del array: <nom_array>[indice]valor
nombre(10)
nombre[3] =“Ramsés”
escribir <nom_array>[indice]
Para i ,1,amigo,1
escribir “Como se llama tu amigo”,i
leer nombre(i)
fin para
Escribe “Cual amigo deseas ver”,
Leer posición
Escribe “Tu amigo es “, nombre(posicion)
6. ARRAYS BIDIMENSIONALES O MATRICES:
En un array unidimensional o vector cada elemento se referencia por un
índice, en un array bidimensional cada elemento se va a referenciar por 2
índices, y ahora la representación lógica ya no va a ser un vector, sino una
matriz. Un array bidimensional de M*N elementos es un conjunto de M*N
elementos, todos del mismo tipo, cada uno de los cuales se referencia a través
de 2 subíndices.
El primer subíndice podrá variar entre 1 y M si hemos empezado a numerar los
índices por 1, y el segundo índice variará entre 1 y N, si hemos empezado a
numerar los índices por el 1.
Y más en general podemos definir un array de 2 dimensiones de la siguiente
manera.
<nom_array>: array [LI1..LS2,LI2..LS2] de <tipo>
<var_array>[I , J] LI1 <= I <= LS1
LI2 <= J <= LS2
7. ORDENACIÓN
Consiste en organizar un conjunto de datos en un orden
determinado según un criterio.
La ordenación puede ser interna o externa:
Interna: La hacemos en memoria con arryas. Es muy
rápida.
Externa: La hacemos en dispositivos de almacenamiento
externo con ficheros.
Para determinar lo bueno que es un algoritmo de
ordenación hay que ver la complejidad del algoritmo
(cantidad de trabajo de ese algoritmo), se mide en el
número de operaciones básicas que realiza un
algoritmo. La operación básica de un algoritmo es la
operación fundamental, que es la comparación.
8. Método de la burbuja:
La filosofía de este método es ir comparando los elementos
del array de 2 en 2 y si no están colocados correctamente
intercambiarlos, así hasta que tengamos el array ordenado.
Hay que comparar la posición 1 y la 2 y si no están
ordenadas las intercambio. Luego la 2 y la 3 y así
sucesivamente hasta que comparo las últimas posiciones.
Con esta primera pasada lograremos que quede ordenado
el último elemento del array.
Teóricamente, en cada pasada iremos colocando un
elemento, y tendríamos que hacer n –1 pasadas. Si en una
pasada no se hacen cambios, el array ya está ordenado.
10. Método de inserción:
Se supone que se tiene un segmento inicial del array
ordenado, y hay que ir aumentando la longitud de
segmento hasta que coincide con la longitud del array.
Para ello insertaremos el siguiente elemento en el lugar
adecuado dentro del segmento ordenado. TÉCNICAS Y
DISEÑOS DE ALGORITMOS INICIANDO LA
PROGRAMACIÓN
Esto se hace moviendo cada elemento del segmento
ordenado a la derecha hasta que se encuentre uno
menor o igual al elemento que queremos colocar en el
segmento o hasta que no tenemos elementos, y lo
coloco en esa posición.
Para arrancar este método se parte de que el
segmento ordenado inicial este es la primera posición.