1. ESTRUCTURAS DE DATOS I
Conocer, comprender y analizar
algunos de los principales tipos de
estructuras de datos
2. Estructuras de Datos: Conceptos
Conjunto de datos de tipos iguales o
diferentes que se relacionan entre si y que
se pueden operar como un todo.
Datos Simples
Hacen referencia a un único valor a la vez en memoria
Entero, Real, Carácter, Lógico
Estáticos Arreglos, Registros,
Archivos, Cadenas
Datos Estructurados
Se refieren a un grupo de casillas de memoria
Dinámicos Listas, Arboles, Grafos
3. Estructuras de Datos: Implementación
Para implementar alguna estructura de datos,
primero es necesario tener muy claro cómo va a
ser el manejo de memoria.
La diferencia entre estructuras estáticas y
dinámicas es el manejo de memoria.
Estática Dinámica
Durante la ejecución Durante la ejecución
del programa el del programa el
tamaño de la tamaño de la
estructura no cambia estructura puede
cambiar
4. Estructuras de Datos
Tema: Memoria Estática
Subtema: Conceptos de Arreglos
Definición: Colección finita, homogenea y ordenada de
elementos. Finita: Porque todo arreglo tiene un límite.
Homogenea: Porque todos los elementos son del mismo tipo.
Ordenada: Porque se puede determinar cuál es el enésimo
elemento.
Un arreglo tiene dos partes: Componentes e índices
C1 C2 .... Cn Componentes
i0 i1 in Índices
Componentes: Hacen referencia a los elementos que forman el
arreglo.
Índices: Permiten referirse a los componentes del arreglo en
forma individual.
5. Estructuras de Datos
Tema: Memoria Estática
Subtema: Arreglos Unidimensionales
Son los arreglos más simples y constan de un solo
índice, tambien se llaman vectores.
Notación: Podría ser de diferentes maneras. Por ej:
Array [0...9] de enteros: Vector
Vector: x
14 43 .... 4 Componentes
x0 x1 x9 Índices
X hace referencia a todo el vector, mientras que x0,
o x1 hace referencia los elementos en forma
individual
6. Estructuras de Datos
Tema: Memoria Estática
Subtema: Arreglos Unidimensionales
Los arreglos se almacenan en forma adyacente, así que su
representación en memoria es:
X0 ,Dirección z; X1 ,Dirección z+1; Xn ,Dirección z+n
Cada elemento del arreglo se puede procesar como si fuera una
variable simple.Ej:
Suma Suma + x[2]
X[2] 15
i 3
X[i] 15
X[i+2] 15
Sobre los vectores se pueden realizar las siguientes operaciones:
Lectura/Escritura, Asignación, Actualización(ins, eli, Mod),
Ordenamiento y Búsqueda.
7. Estructuras de Datos
Tema: Memoria Estática
Subtema: Arreglos Bidimensionales
Estos arreglos constan de dos índices, tambien se llaman
matrices.
Notación: Podría ser de diferentes maneras. Por ej:
Array [0...2, 0...2] de enteros: Matriz
Matriz: M
0 1 2 Indices
34 43 90 0 Operaciones: Lectura,
83 2 41 1 Escritura, Asignación.
56 75 3 2
Componentes
8. Estructuras de Datos
Tema: Memoria Estática
Subtema: Registros(Estructuras)
Un registro es una colección de datos, que pueden ser de diferentes
tipos. Cada uno de sus elementos se llama Campo.
Notación: Podría ser de diferentes maneras. Por ej:
Tipo registro: Domicilio
Entero: Calle Domicilio
Entero: Numero
Cadena: Ciudad Calle Numero Ciudad
Fin Tipo
Domicilio: dir
El acceso a los campos se hace así:
variable_registro.id_campo.
Por Ej: dir.Calle, dir.Numero, dir.Ciudad.
9. Estructuras de Datos
Tema: Memoria Estática
Subtema: Arreglos y Registros
Se pueden presentar las siguientes
combinaciones:
I. Arreglos de Registros: Cada elemento
del registro es un arreglo.
Tipo registro: Cliente Vector
Cadena: Nombre N T N T S N T S
S
Cadena: Teléfono
Real: Saldo 0 1 2
Fin Tipo
Notación:
Array [0...2] de Cliente: Vector
Vector[0].Nombre
10. Estructuras de Datos
Tema: Memoria Estática
Subtema: Arreglos y Registros
II. Registro Anidado: Por lo menos un
campo del registro es de tipo registro.
Tipo registro: Domicilio
Entero: Calle Cliente
Entero: Numero
Cadena: Ciudad Dirección
Fin Tipo Nombre Saldo
Cll Num Ciu
Tipo registro: Cliente
Cadena: Nombre
Domicilio: Dirección Notación:
Real: Saldo Cliente.Nombre
Fin Tipo Cliente.Dirección.Calle
11. Estructuras de Datos
Tema: Memoria Estática
Subtema: Arreglos y Registros
III. Registro con Arreglos: Por lo menos un
campo del registro es un array.
Array [0...2] de Real:Vector
Tipo registro: Estudiante
Cadena: Nombre Estudiante
Cadena: Código Notas
Vector: Notas Nombre Código
Fin Tipo
Notación:
Estudiante.Nombre
Estudiante. Notas[0]
12. Estructuras de Datos
Tema: Memoria Dinámica
Subtema: Apuntadores
Las variables contienen valores especificos,
las variables apuntador contienen direcciones
de memoria de otras variables.
La variable “ptrcont” ptrcont
contiene la dirección cont
29DC
de memoria de la 2
variable “cont”
Las variables apuntador estan asociadas a un tipo de dato.
Por ej. Si el valor de cont es entero la variable apuntador
ptrcont debe ser de tipo entero.
13. Estructuras de Datos
Tema: Memoria Dinámica
Subtema: Apuntadores
Operadores: Una variable apuntador responde a dos operadores:
Operando de Dirección(&): Que devuelve la dirección de su
operando. Por ej:
Entero Y, *ptry
Y 5
Ptry &Y
Operando de Indirección(*) : Que devuelve el alias de su operando.
Por ej:
Entero Y, *ptry
Y 5
Ptry &Y
Escribir(*Ptry)
14. Estructuras de Datos
Tema: Memoria Dinámica
Subtema: Asignación de Memoria
Es el proceso por el cual a una estructura,
sea cual fuere, se le coloca a apuntar una
variable del mismo tipo y sobre ese
apuntador se reserva o se libera memoria de
acuerdo a si la estructura crece o decrece.
15. Estructuras de Datos
Tema: Memoria Dinámica
Subtema: Conceptos de Listas
Una lista es una colección de elementos, generalmente,
llamados nodos.
En gral un nodo tiene 2 partes:
Un campo de info que será del tipo de datos que se
quiera almacenar en la lista.
Un campo de tipo apuntador que se utiliza para
establecer un enlace con otro nodo de la lista. Si es el
ultimo nodo su valor es null. Ya no es necesario que los
nodos se guarden en forma contigua.
ptrcont
5 . 7 . null
16. Estructuras de Datos
Tema: Memoria Dinámica
Subtema: Operaciones con Listas
Crear: Define el primer elemento de la lista.
Insertar: Que coloca nuevos nodos al principio o al
final del nodo dado.
Recorrer: Que “visita” o “atiende” todos o algunos
de los nodos de la lista bajo un criterio dado.
Eliminar: Que borra un nodo dado. Se puede
eliminar el 1º nodo, el ultimo, el que tenga un info
x o el anterior o posterior al que tenga una info x.
18. Estructuras de Datos
Tema: Memoria Dinámica
Subtema: Listas de Acceso Restringido
Pilas: Lista de elementos a la cuál se puede
insertar o eliminar elementos únicamente por uno
de sus extremos.
Los elementos se eliminan en forma inversa a los
que se insertaron, es decir, el ultimo elemento que
ingresa es el primero que se elimina(LIFO).
Se pueden representar con arreglos o listas.
ptrcont
5 . 7 . null
19. Estructuras de Datos
Tema: Memoria Dinámica
Subtema: Listas de Acceso Restringido
Colas: Lista de elementos en la que el
primero en entrar es el primero en
salir(FIFO).
Se pueden representar con arreglos o
listas.
20. Estructuras de Datos
Tema: Memoria Dinámica
Subtema: Arboles
Son la estructura no-lineal más importante en
computación.
No-lineal porque a cada elemento(nodo) le
pueden seguir varios elementos(nodos).
Los arboles AVL(balanceados) son las mejores
estructuras para trabajar con memoria principal.
Los arboles B y los B+ son las mejores
estructuras para trabajar en memoria secundaria.
21. Estructuras de Datos
Tema: Memoria Dinámica
Subtema: Conceptos de Arboles
Es una estructura jerárquica aplicada sobre una
colección de elementos llamados nodos. Uno de los
cuales es llamado raíz.
Además se crea una relación de parentesco entre los
nodos de forma que hay términos como padre, hijo,
hermano, antecesor, sucesor, ancestro, etc. Para definir
un árbol se necesita recursión.
Se utilizan para representar formulas matemáticas,
organizar información, árboles genealógicos,
enumeración de capítulos y secciones de un libro, etc.
22. Estructuras de Datos
Tema: Memoria Dinámica
Subtema: Representación de Arboles
Diagramas de Venn :
A C
B E G
D F H
I J K L
Anidación de paréntesis :
(A(B(D(I),E,F(J,K)),C(G,H(L))))