Vous êtes sur la page 1sur 4

Estructuras dinámicas lineales.

Una estructura de datos es dinámica si para su construcción se utilizan variables


dinámicas, esto es, variables cuya creación y eliminación se lleva a cabo en
tiempo de ejecución. La estructura de datos dinámica más sencilla posible
consiste en una simple secuencia de variables enlazadas mediante punteros; esta
estructura es, por
razones obvias, lineal y recibe el nombre de “lista simplemente enlazada”.

Una lista es una secuencia de longitud variable de elementos del mismo tipo; los
componentes de la lista (y en general de cualquier estructura dinámica) se
denominan “nodos” y entre ellos existe una relación que permite pasar desde un
nodo en particular al siguiente si es que existe; así, un tipo especial de lista es la
lista vacía.

Para manipular la lista implementaremos las operaciones habituales:

Recorrer: Esta operación será implementada como una acción puesto que no
debe retornar ningún valor; recibirá como argumento la cabeza de la lista y
mostrará por pantalla todos los elementos almacenados en la misma.

Buscar un elemento: Esta operación será implementada como una función,


recibirá como argumento un número entero y deberá retornar un puntero al primer
nodo que tenga como valor el entero recibido o NIL si no lo encuentra.

Insertar elemento:
La operación de inserción se implementará como una acción; como veremos más
adelante esta acción define la naturaleza de la lista puesto que no es lo mismo
insertar en la cabeza de la lista, en la cola o de forma ordenada. Recibirá como
argumento un número entero.

Eliminar un elemento:
Esta operación recibirá un número entero como argumento y eliminará el primer
nodo de la lista que tenga asignado dicho valor; será implementada como una
función que retornará un valor lógico de manera que el usuario sepa si el elemento
existía y fue eliminado o si, por el contrario, no existía.

Vaciar:
Esta operación tiene como fin eliminar todos los elementos de la lista, no recibe
argumentos ni retorna ningún valor por lo que será implementada como una
acción.

Todas las operaciones anteriores pueden implementarse tanto de forma iterativa


como de forma recursiva.
Pilas
Una pila, es una estructura de datos en la que el último elemento en entrar es el
primero en salir, por lo que también se denominan estructuras LIFO (Last In, First
Out) o también estructuras lineales con una política UEPS (Ultimo en entrar,
primero en salir).

En esta estructura sólo se tiene acceso a la cabeza o cima de la pila, también solo
se pueden insertar elementos en la pila cuando esta tiene espacio y solo se
pueden extraer elementos de la pila cuando tenga valores.

Ventajas

 Se usan en los compiladores (parsers: reconocedores sintácticos de los


compiladores).
 En la programación de sistemas (para registrar llamadas a subprogramas y
recuperar los datos anteriores, o recuperar los parámetros).
 Otra aplicación de las pilas lo constituye el mecanismo que establecen los
lenguajes de programación para garantizar las llamadas anidadas a
subprogramas dentro de una aplicación.
 Se aplican además en la recuperación de elementos en orden inverso al
que fueron colocados (en un depósito, una pila de contenedores, sillas,
etc.).
 Convertir notación infija a postfija o prefija.
 Para la implementación de la recursividad.

Desventajas
El inconveniente de esta implementación es que es necesario fijar de antemano el
número máximo de elementos que puede contener la pila, MAX_ELEM, y por lo
tanto al apilar un elemento es necesario controlar que no se inserte un elemento si
la pila está llena.
Colas.
Una cola es una estructura de datos, caracterizada por ser una secuencia de
elementos en la que la operación de inserción push se realiza por un extremo y la
operación de extracción pop por el otro. También se le llama estructura FIFO (del
inglés First In First Out), debido a que el primer elemento en entrar será también el
primero en salir.

Las colas se utilizan en sistemas informáticos, transportes y operaciones de


investigación (entre otros), dónde los objetos, personas o eventos son tomados
como datos que se almacenan y se guardan mediante colas para su posterior
procesamiento. Este tipo de estructura de datos abstracta se implementa en
lenguajes orientados a objetos mediante clases, en forma de listas enlazadas.

Operaciones Básicas

 Crear: se crea la cola vacía.


 Encolar (añadir, entrar, push): se añade un elemento a la cola. Se añade al
final de esta.
 Desencolar (sacar, salir, pop): se elimina el elemento frontal de la cola, es
decir, el primer elemento que entró.
 Frente (consultar, front): se devuelve el elemento frontal de la cola, es
decir, el primero elemento que entró.

Ventajas

 Las colas, al igual que las pilas, resultan de aplicación habitual en muchos
problemas informáticos.
 Su utilización es infinita, sobre todo en aquellos problemas que tienen un
componente de simulación de procesos, por ejemplo, la simulación de una
cola formada frente a un cajero automático.
 Para modelar 'colas reales' en el mundo de las computadoras: colas de
tareas, colas de procesos, colas de impresión en el sistema operativo
Windows, etc. Cada usuario de una red de Windows coloca sus trabajos de
impresión y el sistema lo imprime en el mismo orden en que fueron
insertados en la cola de impresión.
 La aplicación más común de las colas es la organización de tareas de un
ordenador. Los procesos forman colas para la utilización de los recursos de
un sistema computacional.

Desventajas

La implementación de las colas de prioridad es costosa en algunas


implementaciones
Listas
Una lista es una estructura de datos lineal que se puede representar
simbólicamente como un conjunto de nodos enlazados entre sí.
Las listas permiten modelar diversas entidades del mundo real como, por ejemplo,
los datos de los alumnos de un grupo académico, los datos del personal de una
empresa, los programas informáticos almacenados en un disco magnético, etc.

Operaciones básicas del TDA Lista:

 a. Vacía (), devuelve verdadero si la longitud de la lista es cero. No se


modifica la lista.
 b. Longitud (), devuelve |L|, la longitud de la lista (cantidad de elementos).
No se modifica la lista.
 c. Obtener (i), devuelve el i-ésimo elemento de la lista (el que se encuentra
en la posición i), si la posición i no existe se dispara una excepción. No se
modifica la lista.
 d. Adicionar(x), adiciona el elemento x en la cola de la lista, haciendo que
la longitud de la lista se incremente en uno. Si la operación no tiene éxito,
se dispara una excepción.
 e. Insertar(x, i), inserta el elemento x en la posición i, haciendo que los
elementos li, li+1,…, ln pasen a ser los elementos li+1, li+2,…, ln+1 y se
incrementa en uno la longitud de la lista. Si la operación no tiene éxito, se
dispara una excepción.
 f. Eliminar(i), elimina el elemento almacenado en la posición i de la lista,
haciendo que los elementos li+1, li+2…,ln pasen a ser los elementos li,
li+1, …, ln-1, esta operación disminuye en uno la longitud de la lista. Si la
posición no existe se dispara una excepción.

Ventajas:

 Las listas son dinámicas, es decir, se pueden almacenar en ellas tantos


elementos como se necesiten, siempre y cuando haya espacio suficiente en
la memoria de la computadora.
 Al insertar un elemento en la lista, la operación tiene un tiempo constante
independientemente de la posición en la que se inserte, solo se debe crear
el nodo y modificar los enlaces de los mismos.
 Al eliminar un elemento sucede lo mismo que se mencionó en el punto
anterior.

Desventajas:

 El acceso a un elemento es más lento, debido a que la información no está


en posiciones contiguas en la memoria de la computadora, por lo que no se
puede acceder a un elemento con base en su posición como se hace en los
arreglos.

Vous aimerez peut-être aussi