Documente Academic
Documente Profesional
Documente Cultură
ESTRUCTURAS
DE DATOS
DEFINICIÓN:
Los datos estructurados llamados también estructuras de datos
es una colección o conjunto de datos simples que tiene el
mismo nombre.
Vectores
Matrices
Estáticas Array
Registros
Ficheros o archivos
Pila
Lineales Colas
Listas enlazadas
Dinámicas
No Árboles
lineales Grafos
ARREGLOS ESTÁTICOS
DEFINICIÓN:
Son aquellos en los que el tamaño ocupado en la memoria se define
antes de que el programa se ejecute y no puede modificarse dicho
tamaño durante la ejecución del programa. Ejemplo de ello son los array
(Arreglos).
ARRAYS (ARREGLOS):
Un array (arreglo, vector o lista, tabla o matriz ) es una estructura de
datos utilizada para almacenar un conjunto de datos.
ARREGLOS-VECTORES
DEFINICIÓN:
Se define como un conjunto finito, homogéneo y ordenado de datos.
Homogéneo: Esto significa que todos los elementos del vector serán
del mismo tipo (todos enteros, todos reales, todos booléanos etc.)
EJEMPLO: ELEMENTOS
Vector sueldo:
PRESENTACIÓN:
Los vectores se pueden representar como filas de datos o columnas de
datos, los elementos del vector sueldo de 10 elementos se representa de
la siguiente manera.
Sueldo(1) $150
Sueldo(2) $500
........
Sueldo(10) $2000
COLUMNA FILA
DECLARACIÓN DE VECTORES:
Así. Para declarar el vector sueldo de 10 elementos se haría de la
siguiente manera.
DIM Sueldo(10) : Real
Palabra reservada
Para declara un vector
Nombre del vector
Tamaño
Tipo de datos
índices
LECTURA:
El proceso de lectura de un arreglo consiste en leer y asignar
un valor a cada uno de sus elementos. Supóngase que se
desea leer todos los elementos del arreglo ARRE.
PSEUDOCÓDIGOS
Desde I = 1 hasta N hacer I = 1
Leer ARRE ( I ) Repetir I desde 1 hasta N hacer
Fin_desde Leer ARRE ( I )
I = I +1
Fin_desde
ESCRITURA:
El caso de la escritura es similar al de la lectura. Se debe
escribir el valor de cada uno de los componentes. Supóngase
que se desea escribir los primeros N componentes del arreglo
ARRE en forma consecutiva. Los pasos a seguir son los
siguientes:
PSEUDOCÓDIGOS
Desde I = 1 hasta N hacer I = 1
Escribir ARRE ( I ) Repetir I desde 1 hasta N hacer
Fin_desde Escribir ARRE ( I )
I = I +1
Fin_desde
ASIGNACIÓN:
En general no es posible asignar directamente un valor a todo el
arreglo; sino que se debe asignar el valor deseado a cada
componentes.
PSEUDOCÓDIGOS
Desde I = 1 hasta N hacer I = 1
ARRE ( I ) = 0 Repetir I desde 1 hasta N hacer
Fin_desde ARRE ( I ) = 0
I = I +1
Fin_desde
ACTUALIZACIÓN
Pueden insertarse nuevos elementos, eliminar y/o modificar
algunos de los ya existentes. Para llevar acabo estas
operaciones eficientemente se debe tener en cuenta si el arreglo
está o no ordenado.
a. ARREGLOS DESORDENADOS.
A
... ...
1 2 3 N N+1 100
a.1. INSERCIÓN:
Para insertar un elemento Y en un arreglo A desordenado
debe verificarse que existe espacio. Si se cumple esta
condición, entonces se asignará a la posición N + 1 el
nuevo elemento. A continuación presentamos el diagrama
de flujo correspondiente.
PSEUDOCÓDIGO:
Insertar_Desordenado
Inicio
Var
Entero: N, Y
Dim A(100) : Entero
Si N < 100 entonces
Leer Y
N = N+1
A(N) = Y
Sino
Imprimir “ No hay espacio para insertar el elemento Y”
Finsi
Fin
A
... Y ...
1 2 3 N N+1 100
a.2. ELIMINACIÓN:
Para eliminar un elemento X de un arreglo A desordenado debe
verificarse que el arreglo no esté vacío y que X se encuentre en el
arreglo. Si se cumple estas condiciones entonces se procederá a
recorrer todo los elementos.
PSEUDOCÓDIGO:
Eliminar_Desordenado
Inicio
Var
Entero: N, X, I, K,
Booleana : BAND
Dim A(100) : Entero
Si N >= 1 entonces
Leer X
I=1
BAND = FALSO
Mientras ( I <= N ) and ( BAND = FALSO ) hacer
Si A(I) = X entonces
BAND = VERDADERO
N=N–1
Desde K = I hasta N hacer
A(K) = A(K+1)
Findesde
Sino
I=I+1
Finsi
Finmientras
Si BAND = FALSO entonces
Imprimir “ El elemento”, X, “no está en el arreglo”
Finsi
Sino
Imprimir “ El arreglo A está vacío”
Finsi
Fin
A
... ...
a.3. MODIFICACIÓN:
Para modificar un elemento X por un elemento Y, de un arreglo A
que se encuentra desordenado debe verificarse que el arreglo no
esté vacío y que X se encuentre en el arreglo. Si se cumplen estas
condiciones entonces se procederá a su actualización. Puede
observarse que existen tareas comunes con la operación de
eliminación:
Determinar que el arreglo no esté vacío.
Encontrar el elemento a modificar (eliminar).
PSEUDOCÓDIGO:
Modificar_Desordenado
Inicio
Var
Entero: N, X, I, K, Y
Booleana : BAND
Dim A(100) : Entero
Si N >= 1 entonces
Leer X
I=1
BAND = FALSO
Mientras ( I <= N ) and ( BAND = FALSO ) hacer
Si A(I) = X entonces
Leer Y
A(I) = Y
BAND = VERDADERO
Sino
I=I+1
Finsi
Finmientras
Si BAND = FALSO entonces
Imprimir “ El elemento”, X, “no está en el arreglo”
Finsi
Sino
Imprimir “ El arreglo A está vacío”
Finsi
Fin
A
... Y ... ...
1 2 3 I N N+1 100
b. ARREGLOS ORDENADOS.
Considerando el arreglo ordenado A de 100 elementos, de la figura
siguiente. Los primeros N componentes del mismo tienen asignado un
valor. En este caso se trabajará con un arreglo ordenado de manera
creciente, es decir:
A(1) <= A(2) <= A(3) <= ... <= A(N)
A
... ...
1 2 3 N N+1 100
b.1. INSERCIÓN:
Para insertar un elemento X en un arreglo A que se encuentra
ordenado, debe verificar que existe espacio.
Luego tendrá que encontrarse la posición en la que debería
estar el nuevo valor para no alterar el orden del arreglo.
Una vez detectada la posición, se procederá a recorrer todos
los elementos desde la misma hasta la N-ésima posición, un
lugar a la derecha.
Finalmente se asignará el valor X en la posición encontrada.
(Los pasos del recorrido no se llevan a cabo cuando el valor a
insertar es mayor que el último elemento del arreglo.)
PSEUDOCÓDIGO:
Insertar_Ordenado
Inicio
Var
Entero: N, X, I, POS
Dim A(100) : Entero
Si N < 100 entonces
// INICIO DEL MÓDULO BUSCAR
Leer X
I=1
Mientras ( I <= N ) and ( A(I) < X ) hacer
I=I+1
Finmientras
Si ( I > N ) OR ( A(I) > X ) entonces
POS = -1
Sino
POS = 1
Finsi
// FIN DEL MÓDULO BUSCAR
// INICIO DEL MÓDULO INSERTAR
Si POS > = entonces
Imprimir “ El elemento ya existe”
Sino
N=N+1
POS = POS * (-1)
I=N
Repetir I desde N hasta (POS +1) hacer
A(I) = A(I - 1)
I=I-1
Finrepetir
A(POS) = X
Finsi
// FIN DEL MÓDULO INSERTAR
Sino
Imprimir “ No hay espacio en el arreglo para nuevas
inserciones”
Finsi
Fin
Ing. Ruth Figueroa de Flores 16
Estructuras de Datos Algoritmo I
A
... Y ... ...
1 2 3 I N N+1 100
b.2. ELIMINACIÓN:
Para eliminar un elemento X en un arreglo ordenado A debe
verificarse que el arreglo no esté vacío. Si se cumple esta
condición, entonces tendrá que buscarse la posición del
elemento a eliminar.
Si el resultado del módulo BUSCAR es un valor positivo, quiere
decir que el elemento se encuentra en el arreglo y por lo tanto
puede ser eliminado.
En otro caso no se puede ejecutar la operación.
PSEUDOCÓDIGO:
Eliminar_Ordenado
Inicio
Var
Entero: N, X, I, POS
Dim A(100) : Entero
Si N > 0 entonces
Sino
Imprimir “ El arreglo esta vacío ”
Finsi
Fin
A
... ...
1 2 3 N-1 N 100
b.3. MODIFICACIÓN:
Se procede de manera similar a la eliminación de un elemento en
un arreglo ordenado. La variante se presenta en que al modificar
el valor X por un valor Y, debe verificarse que el orden, entonces
debería reordenarse al arreglo, o bien eliminar primero el elemento
a modificar e insertar posteriormente el elemento nuevo.
PSEUDOCÓDIGO:
Modificar_Ordebado
Inicio
Var
Entero: N, X, I, POS, Y
Booleana : BAND
Dim A(100) : Entero
Si N >= 1 entonces
Leer X
I=1
BAND = FALSO
Mientras ( I <= N ) and ( BAND = FALSO ) hacer
Si A(I) = X entonces
Leer Y
A(I) = Y
BAND = VERDADERO
Sino
I=I+1
Finsi
Finmientras
Si BAND = FALSO entonces
Imprimir “ El elemento”, X, “no está en el arreglo”
Finsi
// INICIO DEL MÓDULO ELIMINAR
Si POS < 0 entonces
Imprimir “ El elemento no existe”
Sino
N=N-1
I = POS
Repetir I desde POS hasta N hacer
A(I) = A(I + 1)
I=I+1
Finrepetir
Finsi
// FIN DEL MÓDULO INSERTAR
Sino
Sino
Imprimir “ El arreglo A está vacío”
Finsi
Fin
EJEMPLOS:
1. Supóngase que se conoce el sueldo de 50 trabajadores de
una empresa. Utilizar éstos datos para generar el promedio
de sueldos de la empresa y la cantidad de empleados que
tienen sueldo abajo del promedio y cantidad de empleados
que tienen sueldo arriba del promedio. Al final imprimir los 50
salarios y la información generada.
2. Hacer un algoritmo mediante el cual se llene un vector con
50 edades y posteriormente que lo imprima.
ARRAYS BIDIMENCIONALES
<MATRICES>
ARREGLO BIDIMENCIONAL:
Es un conjunto de datos homogéneo, finito y ordenado, donde se hace
referencia a cada elemento por medio de dos índices. El primero de los
índices se utiliza generalmente para indicar filas y el segundo para
indica columna.
EJEMPLO:
Fila 1
Fila 2 18
Fila 3
Fila 4
Fila 5
Fila 6
Columna 6
Columna 5
Columna 4
Columna 3
Columna 2
Columna 1
PRESENTACIÓN DE LA MATRIZ:
El arreglo A(M x N) tiene M filas y N columnas.
Un elemento A(I,J) estará en la fila I, y en la columna J. Internamente
en memoria se reservan M x N posiciones consecutivas para almacenar
todos los elementos del arreglo.
1 2 … J … N
1
2
…
I A(I , J)
…
M
Ing. Ruth Figueroa de Flores 25
Estructuras de Datos Algoritmo I
Donde,
I = 1, … , M O bien 1<= I <= M
J = 1, … , N 1<= J <= N
DECLARACIÓN DE VECTORES:
Para declarar la matriz notas de 20 alumnos y 5 asignaturas se haría de
la siguiente manera. Matriz = Arreglo (1…20, 1…5) de reales.
DIM notas(20 , 5) : Real
Palabra reservada
Para declara un vector
Nombre del vector
Fila
Columna
Tipo de datos
OPERACIONES CON ARREGLOS BIDIMENCIONALES:
Las operaciones que pueden realizar con arreglos bidimensionales son:
6. Lectura /Escritura.
7. Asignación.
8. Actualización:
a)Inserción.
b) Eliminación.
c) Modificación.
9. Ordenación.
10. Búsqueda.
LECTURA:
Cuando se introdujo la lectura en arreglos unidimensionales se dijo que
se iban asignar valores a cada uno de los componentes. Lo mismo
sucede con los arreglos bidimensionales. Sin embargo, como sus
Ing. Ruth Figueroa de Flores 26
Estructuras de Datos Algoritmo I
PSEUDOCÓDIGO
I 1
Desde I 1 hasta 15 hacer Repetir I desde 1 hasta 15 hacer
Desde J 1 hasta 5 hacer J1
Repetir J desde 1 hasta 5 hacer
Leer MATRIZ ( I , J ) Leer MATRIZ ( I , J )
Fin_desde J J+1
Fin_desde
Fin_desde I I +1
Fin_desde
LECTURA:
La escritura de un arreglo bidimensional también se lleva acabo elemento
por elemento. Supóngase que se quiere escribir todos los componentes
del arreglo MATRIZ. Los pasos a seguir son los que se muestran a
continuación:
PSEUDOCÓDIGO
I 1
Desde I 1 hasta 15 hacer Repetir I desde 1 hasta 15 hacer
Desde J 1 hasta 5 hacer J1
Repetir J desde 1 hasta 5 hacer
escribir MATRIZ ( I , J ) escribir MATRIZ ( I , J )
Fin_desde J J+1
Fin_desde
Fin_desde I I +1
Fin_desde
ASIGNACIÓN:
PSEUDOCÓDIGO
I 1
Desde I 1 hasta 15 hacer Repetir I desde 1 hasta 15 hacer
Desde J 1 hasta 5 hacer J1
Repetir J desde 1 hasta 5 hacer
MATRIZ ( I , J ) 0 MATRIZ ( I , J ) 0
Fin_desde J J+1
Fin_desde
Fin_desde I I +1
Fin_desde
2. A un elemento en particular del arreglo: en este caso la asignación
es directa.