Sei sulla pagina 1di 16

INTRODUCCIN

Una estructura de datos es una forma de organizar datos para facilitar su


manipulacin, existen diferentes herramientas que ayudan a facilitar la
organizacin y manipulacin de los datos tales como los vectores que usan una
serie de almacenamiento continuo y almacenan elementos del mismo tipo, las
listas enlazadas que es un tipo de dato auto referenciado que contiene un puntero
a otro dato del mismo tipo, las colas que se caracterizan porque los elementos
entran por un extremo y salen por otro, y al contrario de las pilas en esta
estructura de datos el primer elemento en entrar ser el primero en salir.
En el siguiente trabajo de investigacin se muestra estructuras de datos como son
Colas y Listas, su clasificacin, implementacin y ejemplos que ayudarn a
entender mejor su funcionamiento. Tambin se hace una breve comparacin entre
colas, pilas y listas.

ESTRUCTURAS DE DATOS

Las estructuras de datos determinan la conexin lgica entre los datos y afectan el
procesamiento fsico de los datos. En programacin, una estructura de datos
(EDD) es una forma de organizar la mnima informacin de un sistema, con el
objetivo de facilitar la manipulacin de estos datos como un todo o
individualmente. Una EDD define la organizacin e interrelacin de estos y un
conjunto de operaciones que se pueden realizar sobre ellos. Las operaciones
bsicas son:

Alta: adicionar un nuevo valor a la estructura.


Baja: borrar un valor de la estructura.
Bsqueda: encontrar un determinado valor en la estructura.
Ordenamiento de los elementos pertenecientes a la estructura.
Apareo dadas dos estructuras originar una nueva ordenada y que contenga
a las apareadas.

Generalmente a las estructuras de datos se les asocian los algoritmos, es decir,


que son una secuencia de instrucciones que realizan una tarea. Existen dos tipos
de estructuras de datos:

Estticas: son aquellas en las que el tamao ocupado en memoria se


definen antes de que el programa se ejecute y no puede modificarse
durante la ejecucin del programa. Estos son: Arreglos (arrays), registro,

archivos (files), conjuntos, cadenas (string).


Dinmicas: no tienen limitaciones o restricciones en el tamao de memoria
ocupada, es decir, pueden incrementar o disminuir el tamao en memoria
durante la ejecucin del programa, dependiente de las necesidades de la
aplicacin. Estas son: Listas, pilas y colas, arboles y grafos.

COLAS
5

Una cola es una coleccin de elementos homogneos almacenados en una


estructura permite insertar elementos por uno de los extremos, llamado frente, y
retirar los mismos por el otro extremo, denominado final. En otras palabras, no se
puede acceder directamente a cualquier elemento de la cola, sino solo al primero,
el que est o se encuentra en el frente, y no se pueden insertar elementos en
cualquier posicin sino solo por el final, as el primer elemento insertado queda
como ultimo. Por esta razn la cola es denominada una estructura F.I.F.O, o
simplemente una lista F.I.F.O, que representa el acrnimo de las palabras inglesas
First In, First Out (Primero en entrar, Primero en salir).
Las colas pueden ser representadas de una dimensin (vector) manteniendo dos
variables que indiquen el FRENTE y FINAL de los elementos de la cola.
Estructura F.I.F.O

Sacar

Meter
Frente

Final

Aplicaciones de las colas:


Esta estructura de datos se usa en muchos sistemas operativos, por ejemplo
UNIX, para llevar el control de la ejecucin de procesos, cada proceso en el
sistema es almacenado en una lista y sta se va recorriendo, dndole un pequeo
tiempo del microprocesador a cada proceso, durante la fraccin de segundo de
cada proceso ste asume que tiene el control total del procesador.
Las colas se utilizan en sistemas informticos, transportes y operaciones de
investigacin, entre otros, donde los objetos, personas

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.
6

Operaciones con colas:

Operaciones Bsicas:
o Crear: se crea una cola vaca.
o Encolar (aadir, entrar, insertar): Agregar un elemento al final de la
cola.
o Desencolar (sacar, salir, eliminar): Remover el primer elemento de la
cola.
o Frente (consultar, front): se devuelve el elemento frontal de la cola,

es decir, el primer elemento que entr.


Operaciones Auxiliares:
o Vaca: Regresa un valor booleano indicando si la cola tiene o no
elementos. Es decir, regresa True si la cola esta vaca, False si la
cola tiene al menos un elemento.
o Llena: Regresa un valor booleano indicando si la cola tiene espacio
disponible para insertar nuevos elementos, True si est llena y False
si existen espacios disponibles.

Representacin de Colas
Las colas pueden representarse mediante el uso de:

Arreglos
Listas enlazadas

Implementacin mediante array circular


Esta implementacin es esttica, es decir, da un tamao mximo fijo a la cola. No
se incluye comprobacin de errores dentro del encolado y el desencolado, pero se
implementan como funciones aparte. Podra hacerse con un array secuencial,
como se muestra en las siguientes figuras. 'Entrada' es la posicin de entrada a la
cola, y 'Salida' por donde salen.

Array secuencial:

En esta primera figura se observa que se han introducido tres elementos: 3, 1 y 4


(en ese orden):

Se desencola, obteniendo un 3:

Se encola un 7:

Enseguida se aprecia que esto tiene un grave defecto, y es que llega un momento
en el que se desborda la capacidad del array. Una solucin nada efectiva es
incrementar su tamao. Esta implementacin es sencilla pero totalmente ineficaz.
Como alternativa se usa el array circular. Esta estructura permite volver al
comienzo del array cuando se llegue al final, ya sea el ndice de entrada o el
ndice de salida.
Array Circular:
Implica reutilizar las componentes del vector que contenan elementos ya
eliminados. Esto es, cuando durante el proceso de aadido lleguemos al final del
vector, comenzaremos a llenar COLAS CIRCULARES proceso de aadido
8

lleguemos al final del vector, comenzaremos a llenar de nuevo las componentes


iniciales del mismo si se encuentran vacas. Para lograr esto se maneja el vector
como si fuese un vector circular. Esto significa que no se considera la
componente MAX del vector como la ltima del mismo, sino que se considera que
la siguiente componente a sta es otra vez la primera del vector

Implementacin mediante lista enlazada


Para hacer la implementacin se utilizar una lista circular sin cabecera.
La cola estar inicialmente vaca. Cuando se aadan elementos el puntero que
mantiene la cola apunta al ltimo elemento introducido, y el siguiente elemento al
que apunta es al primero que est esperando para salir.
Para Encolar: Se crea el nuevo elemento, se enlaza con el primero de la cola. Si
no est vaca hay que actualizar el enlace del, hasta el momento de la insercin,
ltimo elemento introducido. Por ltimo se actualiza el comienzo de la cola, est
vaca o no.
Para Desencolar: Si tiene un slo elemento se borra y se actualiza el puntero a
un valor nulo. Si tiene dos o ms elementos entonces se elimina el primero y el
ltimo apuntar al segundo.

Ejemplo grfico de encolado. Partiendo de una cola que tiene el elemento 3, se


van aadiendo el 5 y el 7 (observar de izquierda a derecha). A la hora de
desencolar se extrae el siguiente al que apunta Cola.

Ejemplo grfico de desencolado. Partiendo de la cola formada anteriormente, se


han quitado los dos primeros elementos introducidos (observar de izquierda a
derecha).

LISTAS
Una lista enlazada es una de las estructuras de datos fundamentales, y puede ser
usada para incrementar otras estructuras de datos. Una lista consiste en una
secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o
dos referencias (punteros) al nodo anterior o posterior. El principal beneficio de las
listas enlazadas respecto a los arreglos convencionales es que el orden de los
elementos enlazados puede ser diferente al orden de almacenamiento en la
10

memoria o el disco, permitiendo que el orden de recorrido de la lista sea diferente


al de almacenamiento.

Nodos de las listas:


Un nodo se divide en 2 partes:

Informacin: contiene la informacin del elemento.


Enlace: contiene la direccin del siguiente nodo de la lista.

Aplicaciones de las listas:


Las listas son muy tiles para los casos en los que se necesita almacenar
informacin de la que no se conoce su tamao con antelacin, tambin son de
gran utilidad para las situaciones en las que el volumen de datos se puede
incrementar o decrementar dinmicamente durante la ejecucin de programa.

Operaciones Bsicas de Listas:

Insertar:

La operacin insertar consiste en la introduccin de un nuevo elemento en la lista.


En una lista no ordenada no es necesario mantener ningn orden, por lo tanto la
insercin de elementos se puede realizar en cualquier lugar de la lista, al principio,
al final, en una posicin aleatoria. Generalmente se realiza la insercin de tal
11

forma que la complejidad temporal sea mnima, es decir, que sea una operacin
sencilla para que se realice en el menor tiempo posible. La operacin ms sencilla
depende de la implementacin de la estructura de datos, en unos casos puede ser
la insercin al inicio, en otros la insercin al final y en este caso la insercin la
realiza en el segundo nodo de la lista.
Se tiene la lista:

Luego se inserta el elemento 0, la lista quedara de la siguiente forma:

Borrar:

La operacin borrar consiste en la eliminacin de la lista de un elemento concreto.


El elemento a borrar ser escogido por el programador.
La eliminacin en una lista no conlleva ningn trabajo adicional ms que el propio
de la eliminacin del elemento en s. Para borrar un elemento cualquiera habra
que realizar un recorrido secuencial de la lista hasta encontrar el nodo buscado y
una vez localizado reestructurar los punteros para saltarse el nodo a borrar y as
poder eliminarlo.
Por ejemplo: Borrado del elemento 76 en la lista anterior:
Paso 1: Localizar el elemento a borrar.

12

Paso 2: Reestructurar punteros y eliminar nodo.

Otras operaciones
A partir de estas dos operaciones bsicas cada lista puede presentar muchas
operaciones diferentes, vamos a comentar algunas de ellas, dejando claro que las
dos bsicas que siempre aparecern son las anteriores.

Tamao: Esta operacin suele informar sobre el nmero de elementos que


tiene en ese instante la lista.

Buscar: Comprueba si existe un determinado elemento en la lista.

Recorrer lista: Recorre toda la lista, realizando una operacin en cada


nodo. Por ejemplo, mostrar el contenido por pantalla.

Clasificacin de las listas:


Existen dos criterios generales de calificacin de listas:
Por la forma de acceder a sus elementos:

Listas densas: Cuando la estructura que contiene la lista es la que


determina la posicin del siguiente elemento. La localizacin de un

elemento de la lista es la siguiente:


o Est en la posicin 1 si no existe elemento anterior.
o Est en la posicin N si la localizacin del elemento anterior es (N-1).
Listas enlazadas: La localizacin de un elemento es:
o Estar en la direccin k, si es el primer elemento, siendo k conocido.
o Si no es el primer elemento de la lista, estar en una direccin, j, que
est contenida en el elemento anterior.

Por la informacin utilizada para acceder a sus elementos:


13

Listas ordinales: La posicin de los elementos en la estructura la

determina su orden de llegada.


Listas calificadas. Se accede a un elemento por un valor que coincide con
el de un determinado campo, conocido como clave. Este tipo de listas se
pueden clasificar a su vez en ordenadas o no ordenadas por el campo
clave.

Implementacin de Listas:
Mediante vectores: utilizando una estructura de datos esttica arreglo para
representar e implementar una lista. Asumiendo que los elementos que contiene
una lista son representados por el tipo entero. La cantidad de elementos que
puede contener la lista tiene un mximo de N elementos. Por lo que la
representacin formal de este tipo se define de la siguiente manera:
Tipo LISTA = arreglo [1n] de ENTEROS; VarL : LISTA;
Mediante Listas doblemente enlazadas: Una lista doble es una estructura lineal
de elementos llamados nodos los cuales contienen dos campos de enlace: uno al
elemento anterior y otro al elemento siguiente de la lista.
El primero nodo de la lista contiene nulo en su enlace al elemento anterior y el
ltimo nodo de la lista contiene nulo en su enlace al elemento siguiente.

Operaciones con listas dobles:

14

Insertar: agrega un elemento a la lista


Eliminar: retira un elemento de la lista.
Buscar: busca un elemento en la lista.
Recorren hacia adelante: visita todos los elementos de la lista desde el

inicio hasta el final.}


Vaca: indica si la lista contiene o no elementos.
Tamao: indica el nmero de elementos de la lista.

Diferencias entre Pilas, Listas y Colas:


Sabiendo que tcnicamente la pila y la cola son 2 casos especiales de uso de una
lista. Todos son TAD: Tipos Abstractos de Datos.

En una LISTA los datos pueden almacenar (insertarse) en cualquier orden, y


eliminarse desde cualquier lugar. Es decir puedes insertar al comienzo, al final, en
el medio, y de la misma manera se puede eliminar.

Una COLA es una lista FIFO: First In, First Out. "Primero en Entrar, Primero en
15

Salir". Es decir los elementos se ordenan desde un extremo (el frente) y se van
ordenando uno detrs del otro. El elemento que est en primer lugar entonces se
eliminar, y ahora el segundo pasar a ser el primero. La representacin ms
visual y que aclara esto lo puedes ver cada vez que haces cola o fila para ser
atendida en caja. Naturalmente, el ltimo en llegar, ser el ltimo en salir.
En cambio, la PILA es una lista LIFO: Last In, First Out. "Primero en Entrar, ltimo
en Salir". Es decir los elementos se van formando de forma inversa, llega el
primero, a continuacin el segundo se ubica delante de l, y as hasta llegar el
ltimo. Ahora en el tope de la pila estar el ltimo. Por tanto a eliminarse, se van
retirando en forma inversa, desde el ltimo hacia el primero. Un ejemplo tpico:
cuando apilas los platos al lavar y secar.

En trminos tcnicos, los elementos tienen un puntero (direccin de memoria) que


permite "apuntar" al elemento prximo en la lista.
A continuacin ejemplos de Listas en lenguaje C para mayor entendimiento del
tema tratado:

Ejemplo de Listas mediante Colas en Lenguaje C: donde se realizan las


operaciones crear nodo, pedir los datos y mostrarlos:

16

CONCLUSIONES

17

Si a la hora de usar Colas se conoce de antemano el nmero de elementos


entonces lo ideal es una implementacin por arreglos (arrays), de lo contrario se
recomienda el uso de listas doblemente enlazadas ya que sirven para almacenar
informacin de la que no se conoce su tamao con antelacin. Las listas son
medios de almacenamiento de datos mientras que las pilas y colas son conceptos
lgicos que sirven para operar sobre las listas, es decir, las pilas y colas son dos
casos especiales de listas. La estructura de un nodo esta compuesta por el
espacio donde la informacin se introducir y el espacio del puntero que apunta al
siguiente nodo. En una lista simple los datos se insertan a los nodos en cualquier
orden, caso contrario cuando se usan colas o pilas, de all el nombre de listas
F.I.F.O en el caso de colas, y listas L.I.F.O en el caso de pilas.

WEBGRAFA
1. www.algoritmia.net/articles.php?id=13. Definicin Listas y Clasificacin.

18

2. www.fcqi.tij.uabc.mx/usuarios/palacios/Unidad%20III%20Pilas%20y
%20Colas.pdf. Implementacin de Colas y Listas en Lenguaje C.
3. www.iuma.ulpgc.es/users/jmiranda/docencia/programacion/Tema3_ne.pdf.
Listas enlazadas.

19

Potrebbero piacerti anche