Está en la página 1de 5

Estructura de Datos

Jimnez Viana Israel Enrique

UNIDAD 2

Colas:
- Concepto y Caractersticas
- Operaciones Bsicas
- Tipos de Colas
Listas
- Concepto
- Operaciones Bsicas
- Tipos de Listas

Fecha: 19/10/2011

Colas
Concepto y Caractersticas
Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la
operacin de insercin push se realiza por un extremo y la operacin de extraccin pop por el otro.
Tambin se le llama estructura FIFO (del ingls First In First Out), debido a que el primer elemento
en entrar ser tambin el primero en salir. Las colas se utilizan en sistemas informticos, transportes
y operaciones de investigacin (entre otros), dnde 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. La particularidad de una estructura de datos de cola es el
hecho de que slo podemos acceder al primer y al ltimo elemento de la estructura. As mismo, los
elementos slo se pueden eliminar por el principio y slo se pueden aadir por el final de la cola.
Ejemplos de colas en la vida real seran: personas comprando en un supermercado, esperando para
entrar a ver un partido de bisbol, esperando en el cine para ver una pelcula, una pequea
peluquera, etc. La idea esencial es que son todas lneas de espera. En caso de estar vaca borrar
un elemento sera imposible hasta que no se aade un nuevo elemento. A la hora de aadir un
elemento podramos darle una mayor importancia a unos elementos que a otros (un cargo VIP) y
para ello se crea un tipo de cola especial que es la cola de prioridad. (Ver cola de prioridad).
Operaciones Bsicas

Crear: se crea la cola vaca.

Encolar (aadir, entrar, insertar): se aade un elemento a la cola. Se aade al final de esta.

Desencolar (sacar, salir, eliminar): 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 primer


elemento que entr.

Tipos de colas

Colas circulares (anillos): en las que el ltimo elemento y el primero estn unidos.

Colas de prioridad: En ellas, los elementos se atienden en el orden indicado por una
prioridad asociada a cada uno. Si varios elementos tienen la misma prioridad, se atendern
de modo convencional segn la posicin que ocupen. Hay 2 formas de implementacin:
1) Aadir un campo a cada nodo con su prioridad. Resulta conveniente mantener la cola
ordenada por orden de prioridad.
2) Crear tantas colas como prioridades haya, y almacenar cada elemento en su cola.

Bicolas: son colas en donde los nodos se pueden aadir y quitar por ambos extremos; se
les llama DEQUE (Double Ended QUEue). Para representar las bicolas lo podemos hacer
con un array circular con Inicio y Fin que apunten a cada uno de los extremos. Hay
variantes: Bicolas de entrada restringida: Son aquellas donde la insercin slo se hace por
el final, aunque podemos eliminar al inicio al final.

Bicolas de salida restringida: Son aquellas donde slo se elimina por el final, aunque se
puede insertar al inicio y al final.

Listas
Una lista es una estructura de datos homognea y dinmica, que va a estar formada por una
secuencia de elementos, donde cada uno de ellos va seguido de otro o de ninguno. Una lista es una
estructura de datos secuencial.
Homognea: Todos los elementos que la forman tienen el mismo tipo base.
Dinmica: Puede crecer o decrecer en tiempo de ejecucin segn nuestras necesidades.
Operaciones bsicas de las listas
En toda estructura de datos hay dos operaciones que sobresalen por encima del resto: Insertar y
borrar. Estas dos operaciones aparecern en toda estructura de datos, puede que con otro nombre,
o con una funcionalidad ligeramente diferente, pero su filosofa ser la misma, proporcionar unas
operaciones para la construccin de la estructura de datos.
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 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.
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.

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.

TIPOS DE LISTAS
Listas simples enlazadas
La lista enlazada bsica es la lista enlazada simple la cual tiene un enlace por nodo. Este enlace
apunta al siguiente nodo en la lista, o al valor NULL o a la lista vaca, si es el ltimo nodo.

Una lista enlazada simple contiene dos valores: el valor actual del nodo y un enlace al siguiente nodo

Lista Doblemente Enlazada


Un tipo de lista enlazada ms sofisticado es la lista doblemente enlazada o lista enlazadas de dos
vas. Cada nodo tiene dos enlaces: uno apunta al nodo anterior, o apunta al valor NULL si es el
primer nodo; y otro que apunta al nodo siguiente, o apunta al valor NULL si es el ltimo nodo.

Una lista doblemente enlazada contiene tres valores: el valor, el link al nodo siguiente, y el link al anterior

En algn lenguaje de muy bajo nivel, XOR-Linking ofrece una va para implementar listas
doblemente enlazadas, usando una sola palabra para ambos enlaces, aunque el uso de esta tcnica
no se suele utilizar.
Listas enlazadas circulares
En una lista enlazada circular, el primer y el ltimo nodo estn unidos juntos. Esto se puede hacer
tanto para listas enlazadas simples como para las doblemente enlazadas. Para recorrer una lista

enlazada circular podemos empezar por cualquier nodo y seguir la lista en cualquier direccin hasta
que se regrese hasta el nodo original. Desde otro punto de vista, las listas enlazadas circulares
pueden ser vistas como listas sin comienzo ni fin. Este tipo de listas es el ms usado para dirigir
buffers para ingerir datos, y para visitar todos los nodos de una lista a partir de uno dado.

Una lista enlazada circular que contiene tres valores enteros

Nodos Centinelas
A veces las listas enlazadas tienen un nodo centinela (tambin llamado falso nodo o nodo ficticio) al
principio o al final de la lista, el cual no es usado para guardar datos. Su propsito es simplificar o
agilizar algunas operaciones, asegurando que cualquier nodo tiene otro anterior o posterior, y que
toda la lista (incluso alguna que no contenga datos) siempre tenga un primer y ltimo nodo.