2. Clase de repaso
Suponemos que el alumno ya ha asistido a las clases.
En esta clase haremos un recorrido de los puntos más importantes del
tema 1 y del tema 2.
Debido a que disponemos de un tiempo escaso, nos centraremos en los
puntos fundamentales.
2
4. Tema 1
4
INTRODUCCIÓN.
1. ¿Qué es una estructura de datos y para qué sirve?
2. Abstracción de datos. Concepto de tipo de datos
abstracto.
3. Clasificación de las estructuras de datos.
1. Estructuras Básicas.
1. Arreglos unidimensionales, multidimensionales.
2. Conjunto. Descripción.
3. Registro. Descripción.
4. Implementación de las estructuras de datos.
1. Estática.
2. Dinámica. Descripción de apuntador.
3. Comparación de las implementaciones.
5. Tema 1: Introducción
Abstracción:
Operación mental destinada a destacar las partes relevantes del objeto e
ignorar otros aspectos irrelevantes del mismo.
Evolución de los lenguajes de programación:
Los lenguajes de programación han evolucionado de bajo nivel a alto nivel. John
Guttag en1974 propuso el modelo de tipo abstracto de datos pero no fue
hasta 1975 cuando Liskov lo propuso para el lenguaje CLU. Los lenguajes de
programación son independientes de la máquina.
Tipo abstracto de datos:
Se puede definir como una terna de conjuntos (D, O, A), donde D representa el
dominio; O es el conjunto de operaciones y A es el conjunto de axiomas.
Es independiente del lenguaje de programación. Para llevarlos a cabo se
necesitan las estructuras de datos y los procedimientos.
Ej: Persona, perro.
5
6. Tema 1: Introducción
Estructura de datos:
Las estructuras de datos son agrupaciones de datos, quizás de distinta
naturaleza (tipo), relacionados (conectados) entre sí de diversas formas y las
operaciones definidas sobre esa agrupación. Las estructuras de datos se
caracterizan por el tipo de los elementos de la estructura, las relaciones
definidas sobre los elementos y las operaciones permitidas sobre la estructura.
Ej: Struct Persona { char Nombre[65]; char Direccion[65]; int AnyoNacimiento; } Fulanito;
Tipos de datos:
El tipo de datos, en un lenguaje de programación, define el conjunto de valores
que una determinada variable puede tomar, así como las operaciones básicas
sobre dicho conjunto. Definen cómo se representa la información y cómo se
interpreta. Están los que vienen en el lenguaje de programación y los que puede
definir el usuario.
Ej: boolean, int, float, char, string…
6
10. Tema 1: Introducción
Arreglos: Un arreglo es un tipo de dato cuya implantación implica una
colección de elementos finita y homogénea. Para acceder: nombre del
arreglo y índice.
Ej: int vector[100], float matriz[100 ][100]
10
Figura 1
Figura 2 Figura 3
11. Tema1: Introducción
Registros
Permite agrupar diferentes elementos y manejarlos como un todo, además
permite establecer relaciones lógicas entre ellos. Para acceder a cada uno
de los elementos se utiliza un selector de campo o elemento. Ej:
Ej: struct Producto {int cantidad; int precio ; int subtotal; };
producto.cantidad = 3;
Enumerados
Es un tipo de dato que permite agrupar diferentes identificadores bajo una
denominación y asignar estos valores a las variables definidas para ello.
Ej: Enum color = {rojo,verde, azul, amarillo};
11
12. Tema 1: Implementación de las estructuras de
datos, Estática vs dinámica
Implementación estática:
No se modifica en tiempo de ejecución. Fácil de manejar y rápida de acceso
pero se desperdicia memoria.
Implementación dinámica:
Su tamaño puede variar durante la ejecución del programa. Más complejo
de implementar pero optimiza el programa. Complica el acceso y la
optimización del programa.
12
13. Tema 1: Apuntadores
13
Ejemplo 1;
Int * p; // declaramos p
p = new int; // reservamos espacio
*p= 1; // asignamos el valor 1
delete p; // liberamos espacio de p
Ejemplo 2;
int i = 2;
int *pi ;
pi = &i; // ahora pi contiene la dirección de la variable i.
int j = *pi; // j tomaría el valor 2, que es el contenido de la variable i anterior
Ejemplo 3;
int *i, *j;
i= j; // i apunta donde apunta j
*i = *j; // la variable *i tiene en su memoria el contenido de *j
Un apuntador es una variable que contiene una posición de memoria, y por
tanto se dice que apunta a esa posición de memoria. Tiene las operaciones de
new y delete. Hay operadores como dirección “&” o “*”, que es el valor
contenido y el operador “->” para acceder a un campo.
15. Tema 2: Pilas
15
ESTRUCTURA DE DATO: PILAS.
1. Descripción.
2. Operaciones básicas.
1. Vaciar pila.
2. Revisar si está vacía.
3. Insertar y sacar un elemento.
4. Devolver el elemento que se encuentre en el tope.
16. Tema 2: Pilas
La pila es una lista de elementos caracterizada porque las operaciones de
inserción y eliminación de elementos se realizan solamente en un extremo
de la estructura que se llama tope. Estructura LIFO (Last In First Out):
“Último en entrar primero en salir”
Ejemplo: Platos o Libros
16