Está en la página 1de 19

UNIDAD 1

INTRODUCCIN A LAS ESTRUCTURAS


DE DATOS
EQUIPO 1
INTEGRANTES:
JESUS DANIEL CONTRERAS CRUZ
ALEJANDRO SALVADOR REAL
MIGUEL ANGEL LOPEZ LUCIANO

1.1 CLASIFICACIN DE ESTRUCTURAS DE


DATOS

1.3 EJEMPLOS DE TDAS


Un TDA es un tipo de dato definido por el programador que
se puede manipular de un modo similar a los tipos de datos
definidos por el sistema.

Est formado por un conjunto vlido de elementos y un


nmero de operaciones primitivas que se pueden realizar
sobre ellos.

Ejemplo:
Definicin del tipo
Numero racional: Conjunto de pares de elementos (a,b) de
tipo entero, con b<>0.
Operaciones:
CrearRacional:
a, b
= (a,b)
Suma: (a,b) + (c,d)
= (a*d+b*c , b*d)
Resta: (a,b) - (c,d) = (a*d-b*c , b*d)
Producto:
(a,b) * (c,d)
= (a*c , b*d)
Divisin:
(a,b) / (c,d)
= (a*d , b*c)
Numerador:
(a,b)
=a
Denominador: (a,b) = b
ValorReal:
(a,b)
= a/b
MCD:
(a,b)
...
Potencia:
(a,b)^c = (a^c , b^c)
Simplifica:
(a,b)
= ( a/mcd(a,b) , b/mcd(a,b) )

Una vez definido se podrn declarar variables de ese tipo y operar


con ellas utilizando las operaciones que aporta el tipo.
Ejemplo:

TRacional r1,r2, rsuma;


CrearRacional(4,7, &r1);
CrearRacional(5,8,&r2);
Suma(r1, r2, &rsuma);
printf(El valor real es %f, ValorReal(rsuma) );

TDA Pila
Definicin del Tipo
Es una coleccin lineal, dinmica y homognea, en la que los
elementos de insertan y se extraen por el mismo extremo. Tambin
conocida como estructura LIFO (Last In, First Out).
Operaciones:
CrearPila
Meter
Sacar
DestruirPila
EstaVacia

Representacin:
Utilizaremos un array para
representar la pila.
Definiremos un tamao mximo
de array (MaxElemPila).
Llevaremos una variable: cima
que indicar cual es el ltimo
elemento ocupado en el array.

#define MaxElemPila
struct _TPilaEnteros {
int elementos[MaxElemPila];
int cima;
};
typedef struct _TPilaEnteros
TPilaEnteros;
void CreaPila (TPilaEnteros *p) { p>cima = 0; };
int InsertaPila (int nelem, TpilaEnteros
*p) {
if (p->cima==MaxElemPila) {
return 0; /*No se ha podido
insertar*/
} else {
p->cima++;
p->elementos[p->cima]=nelem;

1.4 Manejo de
memoria
La unidad de manejo de memoria
o unidad de gestin de memoria
es un dispositivo de Hardware
formado por un grupo de circuitos
integrados, responsable del
manejo de los accesos a la
memoria por parte de la Unidad de
Procesamiento Central (CPU).

Entre las funciones de este


dispositivo se encuentran
la traduccin de las
direcciones virtuales a
direcciones fsicas la
proteccin de la memoria,
el control de cach y, en
arquitecturas de
computadoras ms simples
(especialmente en
sistemas de 8 bits).

Memoria Esttica
La forma ms fcil de almacenar el contenido de una
variable en memoria en tiempo de ejecucin es en memoria
esttica o permanente a lo largo de toda la ejecucin del
programa.
No todos los objetos (variables) pueden ser almacenados
estticamente.
Para que un objeto pueda ser almacenado en memoria
esttica su tamao (nmero de bytes necesarios para su
almacenamiento) ha de ser conocido en tiempo de
compilacin, como consecuencia de esta condicin no
podrn almacenarse en memoria esttica:

Memoria Dinmica
La memoria dinmica es un espacio de
almacenamiento que se solicita en tiempo de
ejecucin.
De esa manera, a medida que el proceso va
necesitando espacio para ms lneas, va solicitando
ms memoria al sistema operativo para guardarlas.
El medio para manejar la memoria que otorga el
sistema operativo, es el puntero, puesto que no
podemos saber en tiempo de compilacin dnde nos
dar huecos el sistema operativo (en la memoria de
nuestro PC).

Reserva de memoria.
La funcin g_malloc posibilita la reserva de una zona de
memoria, con un nmero de bytes que le pasemos como
parmetro.
Adems, tambin existe una funcin similar llamada
g_malloc0 que, no slo reserva una zona de memoria,
sino que, adems, llena esa zona de memoria con ceros,
lo cual nos puede beneficiar si se necesita un zona de
memoria totalmente limpia.
gpointer g_malloc (gulong numero_de_bytes );
gpointer g_malloc0 (gulong numero_de_bytes );
Existe otro conjunto de funciones que nos permiten
reservar memoria de una forma parecida a cmo se hace
en los lenguajes orientados a objetos.

Liberacin de memoria.
Cuando se hace una reserva
de memoria con g_malloc y,
en un momento dado, el uso
de esa memoria no tiene
sentido, es el momento de
liberar esa memoria.

Realojamiento de memoria
En determinadas ocasiones, sobre
todo cuando se utilizan estructuras de
datos dinmicas, es necesario ajustar
el tamao de una zona de memoria
(ya sea para hacerla ms grande o
ms pequea).

Y el sustituto de free es g_free


que, bsicamente, funciona
igual que la anteriormente
mencionada.

Para eso, GLib ofrece la funcin


g_realloc, que recibe un puntero a
memoria que apunta a una regin que
es la que ser acomodada al nuevo
tamao y devuelve el puntero a la
nueva zona de memoria.

void g_free (gpointer


memoria_reservada );

El anterior puntero es liberado y no se


debera utilizar ms:
gpointer g_realloc (gpointer

Asignacin dinmica
El proceso de compactacin del punto anterior es una instancia
particular del problema de asignacin de memoria dinmica, el
cual es el cmo satisfacer una necesidad de tamao n con una
lista de huecos libres.
Existen muchas soluciones para el problema.
El conjunto de huecos es analizado para determinar cul hueco
es el ms indicado para asignarse. Las estrategias ms comunes
para asignar
hueco
de laAjuste
tabla son: Peor Ajuste
Primer algn
Ajuste
Mejor
Consiste en
asignar el
primer hueco
con capacidad
suficiente

Busca asignar el Asigna el hueco


espacio ms
ms grande.
pequeo de los
espacios con
capacidad
suficiente.

También podría gustarte