Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ESTRUCTURA DE DATOS
La Abstracción de Datos es la
técnica de inventar nuevos tipos de
datos que sean más adecuados a
una aplicación y, por consiguiente,
facilitar la escritura del programa. La
técnica de abstracción de datos es
una técnica potente de propósito
general que cuando se utiliza
adecuadamente, puede producir
programas más cortos, más legibles
y flexibles.
TIPO DE DATOS ABSTRACTO
• Arreglos
Estáticas
• Matrices
• Listas
Internas
• Lineales • Pilas
Dinámicas • Colas
Estructuras
de Datos
• Árboles
• No Lineales
• Grafos
• Bases de Datos
Externas
• Archivos
MANEJO DE MEMORIA
Para implementar alguna estructura de datos, primero es
necesario tener muy claro cómo va a ser el manejo de
memoria
Estática Dinámica
Durante la ejecución del Durante la ejecución del
programa el tamaño de programa el tamaño de la
la estructura no cambia estructura puede cambiar
MEMORIA ESTÁTICA
ARREGLOS
C1 C2 .... Cn Componentes
i0 i1 in Índices
n Componentes: Hacen referencia a los elementos que forman el
arreglo.
n Índices: Permiten referirse a los componentes del arreglo en
forma individual.
MEMORIA ESTÁTICA
ARREGLOS UNIDIMENSIONALES
14 43 .... 4 Componentes
x0 x1 x9 Índices
n X hace referencia a todo el vector, mientras que x0, o x1
hace referencia los elementos en forma individual
MEMORIA ESTÁTICA
ARREGLOS UNIDIMENSIONALES
0 1 2 Indices
34 43 90 0 n Operaciones: Lectura,
83 2 41 1 Escritura, Asignación.
56 75 3 2
Componentes
MEMORIA ESTÁTICA
ARREGLOS Y REGISTROS
Notación:
Estudiante.Nombre
Estudiante. Notas[0]
MEMORIA ESTÁTICA
IMPLEMENTACIÓN DE VECTORES Y
MATRICES EN C++
Los índices en C++ van de la posición 0 hasta la posición tamaño - 1
int arregloEntero[10];
//Declaracion de un arreglo de 10 elementos, sin inicializar.
struct unProducto {
char name_prod[MAXCAD]; // nombre del producto
int cantidad;
int precio ;
int subtotal;
};
struct variosProductos {
int numProductos ; // numero de productos por vendedor
unProducto vp[MAX_PV]; //varios productos cada uno en una posición del vector
int precioTotal ;
};
struct Vendedor {
char nombre[MAXCAD] ;
char apellidos[MAXCAD] ;
char direccion[MAXCAD];
int clave_vendedor ;
variosProductos P ;
};
Es aquella que se reserva en tiempo de ejecución después de leer los datos y de conocer
el tamaño exacto del problema a resolver. El sitio donde se almacenan los objetos se le
denomina HEAP = MONTÍCULO pero el sitio preciso donde se encuentra tal montículo
depende del compilador y el tipo de puntero utilizado en la reserva de memoria dinámica.
La referenciación es la Ejemplo:
obtención de la dirección
de una variable. En C++ int i = 5;
esto se hace a través del int *p, *q;
operador ‘&’, aplicado a la p = &i; // Se le asigna a ’p’ la dirección de ’i’
variable a la cual se q = p; // Se le asigna a ’q’ la dirección
almacenada en ’p’ (la misma de ’i’)
desea saber su dirección.
La desreferenciación es
la obtención del valor Ejemplo:
almacenado en el espacio
int x = 17, y;
de memoria donde apunta
int *p;
un apuntador. En C++ esto p = &x; cout << "El valor de x es: " << *p <<
se hace a través del endl; // Imprime 17
operador ‘*’, aplicado al
apuntador que contiene la y=*p+3; // a ’y’ se le suma 3 más para valer 20
dirección del valor.
MEMORIA DINÁMICA
APUNTADORES
C++ además provee el operador binario ‘->’, utilizado para obtener campos de un
registro con un apuntador al mismo de una manera m a ́ s fácil y legible.
struct Datos {
char nombre[20];
int edad;
};
Datos d;
Datos *pd = &d;
int * empleado;
Operadores new y new[ ] empleado = new int [5];
Para solicitar memoria dinámica es: If (empleado == NULL) {
pointer = new type // error en la asignación...
o };
pointer = new type [elementos]
Nota: los operadores new y delete son propios de C++. En C se usan funciones, como
malloc y free para reservar y liberar memoria dinámica.
MEMORIA DINÁMICA
APUNTADORES
Ejemplo: Operadores New y Delete de C++
int main() {
char *c;
int *i = NULL;
float **f;
int n;