Vous êtes sur la page 1sur 7

UNIVERSIDAD TECNOLGICA DE MXICO

LICENCIATURA EN INGENIERA EN SISTEMAS COMPUTACIONALES

CONSTRUCCION DE ESTRUCTURAS DE DATOS DINMICAS.


Este tipo de estructura ocupa un espacio en memoria, el cual vara
durante el tiempo de ejecucin de un programa. Las ms utilizadas son:
Listas simplemente enlazadas (con y sin cabecera), Listas doblemente
Enlazadas (con y sin cabecera), Pilas, Colas, rboles y Grafos.
Las estructuras de datos dinmicas permiten representar colecciones de
datos de tal forma que se reduzcan espacios y en donde el nico limite
en tiempo de ejecucin es la cantidad de memoria disponible.
Los punteros son el mecanismo
estructuras de datos dinmicas.

que

nos

permite

construir

las

Se caracteriza por el hecho de que con un nombre se hace referencia a


un grupo de casillas de memoria. Es decir un dato estructurado tiene
varios componentes.

Las estructuras dinmicas de datos se pueden dividir en dos grandes


grupos:
Lineales: Pilas, Colas, Listas enlazadas
No lineales: rboles, Grafos
Una de las aplicaciones de la memoria dinmica y de los punteros son,
sin duda, las estructuras dinmicas de datos. Las estructuras bsicas

disponibles en C y C++ (
) tienen una importante
limitacin: no pueden cambiar de tamao durante la ejecucin.
Los
estn compuestos por un determinado nmero de elementos,
nmero que se decide en la fase de diseo, antes de que el programa
ejecutable sea creado.
Las estructuras de datos estn compuestas de otras pequeas
estructuras a las que llamaremos nodos o elementos, que agrupan los
datos con los que trabajar nuestro programa y adems uno o ms
punteros autorreferenciales, es decir, punteros a objetos del mismo tipo
nodo.
Una estructura bsica de un nodo para crear listas de datos seria:
struct nodo {
int dato;
struct nodo *otronodo;
};

El campo "
" puede apuntar a un objeto del tipo nodo. De este
modo, cada nodo puede usarse como un ladrillo para construir listas de
datos, y cada uno mantendr ciertas relaciones con otros nodos.
Para acceder a un nodo de la estructura slo necesitaremos un puntero
a un nodo.

Representacin del nodo anterior.


Las estructuras dinmicas son una implementacin
de
o
(Tipos Abstractos de Datos).
En estos tipos el inters se centra ms en la estructura de los datos que
en el tipo concreto de informacin que almacenan.
Dependiendo del nmero de punteros y de las relaciones entre nodos,
podemos distinguir varios tipos de estructuras dinmicas.
Tipos bsicos de estructuras:

Listas abiertas: cada elemento slo dispone de un puntero, que apuntar al


siguiente elemento de la lista o valdr NULL si es el ltimo elemento.
Pilas: son un tipo especial de lista, conocidas como listas LIFO (Last In, First
Out: el ltimo en entrar es el primero en salir). Los elementos se "amontonan"

o apilan, de modo que slo el elemento que est encima de la pila puede ser
ledo, y slo pueden aadirse elementos encima de la pila.
Colas: otro tipo de listas, conocidas como listas FIFO (First In, First Out: El
primero en entrar es el primero en salir). Los elementos se almacenan en fila,
pero slo pueden aadirse por un extremo y leerse por el otro.
Listas circulares: o listas cerradas, son parecidas a las listas abiertas, pero el
ltimo elemento apunta al primero. De hecho, en las listas circulares no puede
hablarse de "primero" ni de "ltimo". Cualquier nodo puede ser el nodo de
entrada y salida.
Listas doblemente enlazadas: cada elemento dispone de dos punteros, uno a
punta al siguiente elemento y el otro al elemento anterior. Al contrario que las
listas abiertas anteriores, estas listas pueden recorrerse en los dos sentidos.
Arboles: cada elemento dispone de dos o ms punteros, pero las referencias
nunca son a elementos anteriores, de modo que la estructura se ramifica y
crece igual que un rbol.
Arboles binarios: son rboles donde cada nodo slo puede apuntar a dos
nodos.
Arboles binarios de bsqueda (ABB): son rboles binarios ordenados. Desde
cada nodo todos los nodos de una rama sern mayores, segn la norma que se
haya seguido para ordenar el rbol, y los de la otra rama sern menores.
Arboles AVL: son tambin rboles de bsqueda, pero su estructura est ms
optimizada para reducir los tiempos de bsqueda.
Arboles B: son estructuras ms complejas, aunque tambin se trata de rboles
de bsqueda, estn mucho ms optimizados que los anteriores.
Tablas HASH: son estructuras auxiliares para ordenar listas.
Grafos: es el siguiente nivel de complejidad, podemos considerar estas
estructuras como rboles no jerarquizados.
Diccionarios.

DIFERENCIAS ENTRE ESTRUCTURAS DE DATOS LINEALES Y NO LINEALES

Una estructura de datos puede ser clasificada como lineal no lineal de acuerdo la relacin
entre los elementos que la forman.
En una estructura lineal los elementos tienen una relacin 1 a 1.
Ejemplos de estructuras de datos lineales: listas, pilas y colas.
En una estructura no lineal, los elementos tienen una relacin 1 a M, M a 1 M a M.
Ejemplos de estructuras de datos no lineales: rboles y grafos.

Apuntadores. Concepto de Apuntadores


Los apuntadores tambin conocidos como punteros, son variables que cuyo
valor que guardan son direcciones de memoria de otra variable. Se dice que un
apuntador apunta a la variable cuyo valor se almacena a partir de la direccin de
memoria que contiene el apuntador. Proporcionan mucha utilidad para accesar y
manipular datos, tambin son tiles para el paso de parmetros en las funciones
de tal modo que permita la modificacin y el regreso de valores a la rutina que las
llama. Los apuntadores son un recurso que en cierta forma podra considerarse de

muy bajo nivel, ya que permiten manipular directamente contenidos de memoria.


Se pueden tener apuntadores a cualquier tipo de variable. Para tener
acceso a la direccin de memoria de una variable se hace uso del
operador unario o direccin &. Y para tener acceso al contenido de un objeto
apuntado por un apuntador se hace uso del operador indireccin o
desreferencia *.
Para trabajar con apuntadores las siguientes reglas son necesarias:
Un apuntador antes de utilizarse, debe de inicializarse hacia alguna direccin
de memoria, por lo general es una direccin donde se encuentra una variable.
Un apuntador nicamente almacena direcciones a diferencia de las variables
que almacenan valores.
Un apuntador solo puede apuntar a una sola direccin en un instante de
tiempo, es decir, solo almacena una direccin en un instante de tiempo. La
direccin a la que se apunta el apuntador, generalmente representa la
ubicacin de una variable.
Varios apuntadores si pueden apuntar a la misma direccin de memoria en un
instante de tiempo.
Aunque no siempre, un apuntador debe de apuntar al mismo tipo de dato con
el cual fue declarado. Por ejemplo si el apuntador se declaro como apuntador
a datos de tipo entero, entonces deber apuntar nicamente a variables de
tipo entero.

Declaracin de Apuntadores

Para declarar un apuntador se especifica el tipo de dato al que apunta, el


operador *, y el nombre del apuntador. La sintaxis es la siguiente:

Por ejemplo:

La primera declaracin se lee de la siguiente manera: ptr1 es un


apuntador a datos de tipo entero. La segunda declaracin se lee de la siguiente
manera cad1 y cad2 son dos apuntadores a datos de tipo char (caracteres). Y el
tercero se lee ptr2 es un apuntador a datos de tipo float (punto flotante). La
ultima es una apuntador utilizando el operador de direccin por lo cual nos
retornara la variable apuntador p la direccin de memoria en la que se encuentra
almacenado el valor correspondiente a la variable x independientemente del tipo

de variable que sea.


Representacin Grfica de Apuntadores

Un puntero puede tomar un valor especial NULL


para indicar que no apunta a ningn lugar accesible.
As pues, px es una variable, pero no podr tener
Dato
valores como la x, es decir, no podr contener un 2 o
un 5, sino que contendr slo direcciones de memoria.
Normalmente, a nivel grco representaremos una direccin de memoria con una
echa que apunta a una zona de memoria determinada o con un smbolo que
represente que el puntero tiene un valor NULL.
Puntero

Variable
Referenciada

Si queremos acceder al contenido de la posicin de


memoria a la que seala px, tenemos que hacerlo px
px = NULL
utilizando la expresin *px, hay que tener en cuenta

que se accede a una variable del tipo para la cual se


px = NULL
denio el puntero, en este caso un entero. Adems del
mecanismo *px para acceder a la zona de memoria
donde apunta px, se dispone del operador & que
permite recuperar la direccin de una variable que ya existe en memoria. Este
nuevo operador se utilizara par poder obtener la direccin de memoria de una
variable y asignarla a un puntero.
El Proceso de Indireccin

La indireccin se denota con el operador * seguido del nombre de una


variable de tipo puntero. Su significado es accede al contenido al que apunta el
puntero o apuntador. Desafortunadamente, este operador coincide con el utilizado
para denotar los tipos de datos punteros y para declarar este tipo de variables.
Supongamos que las direcciones de memoria se representan internamente con 32
bits (4 bytes). Entonces, podemos almacenar la direccin de d1 (el nmero 100)
en otro lugar en memoria que ocupar 4 bytes por ser una direccin de memoria.
La siguiente figura muestra esta situacin con la direccin de memoria
almacenada en la posicin 200.
RAM

Struct contact {
Int n1;
Float n2;
Char st[10];
} dl;

100

n1

104

n2

108

d1
st

117
200

100
4 bytes

Se obtiene la direccin de memoria de


cualquier
variable
mediante
el
operando & seguido del nombre de la variable.
En la figura, la expresin &d1 devuelve el valor
de 100. El valor que devuelve el
operador & depende de la posicin de memoria
de su operando.

&d1

como

A la direccin de memoria almacenada


dato en la posicin 200 se le

denomina puntero pues su valor apunta a donde se encuentra la variable d1, es


decir, en la posicin 200 hay un puntero a d1. Si en la posicin 200 est AR 12

Mapa conceptual

Cuestionario.
1. Ocupa un espacio en memoria, el cual varia durante el tiempo de
ejecucin de un programa.
a) Estructura Dinmica b) Estructura Esttica

c)Estructura Dos

2. Una estructura dinmica se dividen en:


a) Lineales y no lineales

b) Lineal y de flujo

c)Flujo y estado

3. Se dividen en listas abiertas circulares y doblemente enlazadas.


a) Colas

b) Listas

c) Grafos

d) rbol

4. Es el siguiente nivel de complejidad, podemos considerar estas


estructuras como arboles no jerarquizados.
a) Grafos b) Estructura de rbol c) Listas
d) colas
5. Son el mecanismo que nos permite construir las esrructuras de datos
dinmicos.
a) Arreglos

b) Cadenas

c) Punteros

6. Son conocidas como listas FIFO.


a) Colas

b) Estructura Esttica

c)Listas

7. Una estructura de datos puede ser clasificada como lineal no lineal de


acuerdo la relacin entre los elementos que la forman. Cierto o falso

a) Cierto

b) Falso

8. son parecidas a las listas abiertas, pero el ltimo elemento apunta al


primero. De hecho, en las listas circulares no puede hablarse de "primero"
ni de "ltimo". Cualquier nodo puede ser el nodo de entrada y salida.

a) Listas circulares

b) Listas abiertas c) arboles

9. Las estructuras de datos estn compuestas de otras pequeas


estructuras a las que llamaremos.

a) Nodos o elementos b) punteros c) grafos.


10. En una estructura lineal los elementos tienen una relacin 1 a 1.

Cierto o falso
b) Cierto

b) Falso

Vous aimerez peut-être aussi