Sunteți pe pagina 1din 6

IUTIRLA Caracas Sede Los Chaguaramos Carrera de Informtica

Estructura de Datos III Semestre

Estructura de Datos, Colas


Fecha Autor : 18 de octubre de 2011 : 13.139.684 Romn Vidoza, Luis Oscar

ndice
Indice .. 1 Introduccin .. 1 Definicin de cola .... 3 Insertar y Remover datos en un arreglo ..... 2 Ejemplos de algoritmos .. 4 Conclusiones .. 6 Referencias Bibliogrficas .. 6

Introduccin En programacin, una estructura de datos es una forma de organizar un conjunto de datos elementales (un dato elemental es la mnima informacin que se tiene en el sistema) con el objetivo de facilitar la manipulacin de estos datos como un todo o individualmente. En el siguiente informe describiremos de manera sencilla y directa la estructura de dato conocida con el nombre de Cola, se dar una pequea descripcin de las operaciones bsicas, ejemplos (similitudes con la cotidianidad), insercin y extraccin, como los enunciados de algunos algoritmos. Definicin de Cola 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. Frente

Cola

Final

IUTIRLA Caracas Sede Los Chaguaramos Carrera de Informtica

Estructura de Datos III Semestre

Como puede observarse, sta estructura cuenta con dos apuntadores, uno que apunta al ltimo elemento y otro que apunta hacia el primer elemento (o el elemento del frente). Se debe tener en cuenta que, una cola, almacena los datos en ella, manteniendo cierto orden, ya que sus elementos se aaden por el final de la cola y se extraen o se eliminan por la parte de frente. Nos encontramos ante una estructura con muy pocas operaciones disponibles. Las colas slo permiten aadir y leer elementos: 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. Ejemplos cotidianos de estructura de colas: Las personas esperando para usar un telfono pblico. Las personas que esperan para ser atendidas en una caja de un banco. Los autos que esperan que cambie la luz roja de un semforo Los nios que esperan un juego para subir un juego mecnico. Como Insertar y remover datos en un arreglo tipo cola: Los arreglos tipos colas trabajan bajo las operaciones:

insert (q, x) Inserta el elemento x en la parte posterior de la cola q. remove (q) Suprime el elemento delantero de la cola q. empty (q) Retorna True o false, si la cola tiene elementos o no.

Arreglo (q)

IUTIRLA Caracas Sede Los Chaguaramos Carrera de Informtica

Estructura de Datos III Semestre

La figura de arriba, muestra la forma de implementar una cola, como arreglo, en la que cada casilla, representa una estructura compuesta por el tipo de dato a guardar (o bien otra estructura). Las variables q.rear y q.front, se van modificando cada vez que aadimos o eliminamos datos de nuestra cola. Procedimiento para insertar: Insert (&q, A); A 0 q.rear=0, q.front=0 Insert (&q, B); A 0 q.rear=1, q.front=0 Insert (&q, C); A 0 q.rear=2, q.front=0 B 1 C 2 3 4 B 1 2 3 4 1 2 3 4

Procedimiento para remover: Remove (&q) B 0 q.rear=2, q.front=1 Remove (&q) 1 C 2 3 4

IUTIRLA Caracas Sede Los Chaguaramos Carrera de Informtica

Estructura de Datos III Semestre

C 0 q.rear=2, q.front=2 1 2 3 4

Ejemplo de Lenguajes de Programacin con Algoritmos para Estructura de datos tipo Cola: Ejemplo en C:
void Anadir(pNodo *primero, pNodo *ultimo, int v) \{ pNodo nuevo; /* Crear un nodo nuevo */ nuevo = (pNodo)malloc(sizeof(tipoNodo)); nuevo->valor = v; /* Este ser el ltimo nodo, no debe tener siguiente */ nuevo->siguiente = NULL; /* Si la cola no estaba vaca, aadimos el nuevo a continuacin de ultimo */ if(*ultimo) (*ultimo)->siguiente = nuevo; /* Ahora, el ltimo elemento de la cola es el nuevo nodo */ *ultimo = nuevo; /* Si primero es NULL, la cola estaba vaca, ahora primero apuntar tambin al nuevo nodo */ if(!*primero) *primero = nuevo; }

Ejemplo en C++:
#include <iostream> using namespace std; class nodo \{ public: nodo(int v, nodo *sig = NULL) \{ valor = v; siguiente = sig; } private: int valor; nodo *siguiente; friend class cola; }; typedef nodo *pnodo; class cola \{ public: cola() : ultimo(NULL), primero(NULL) \{} ~cola(); void Push(int v); int Pop(); private:

IUTIRLA Caracas Sede Los Chaguaramos Carrera de Informtica

Estructura de Datos III Semestre

pnodo ultimo; }; cola::~cola() \{ while(primero) Leer(); } void cola::Anadir(int v) \{ pnodo nuevo; /* Crear un nodo nuevo */ nuevo = new nodo(v); /* Si la cola no estaba vaca, aadimos el nuevo a continuacin de ultimo */ if(ultimo) ultimo->siguiente = nuevo; /* Ahora, el ltimo elemento de la cola es el nuevo nodo */ ultimo = nuevo; /* Si primero es NULL, la cola estaba vaca, ahora primero apuntar tambin al nuevo nodo */ if(!primero) primero = nuevo; } int cola::Leer() \{ pnodo nodo; /* variable auxiliar para manipular nodo */ int v; /* variable auxiliar para retorno */ /* Nodo apunta al primer elemento de la pila */ nodo = primero; if(!nodo) return 0; /* Si no hay nodos en la pila retornamos 0 */ /* Asignamos a primero la direccin del segundo nodo */ primero = nodo->siguiente; /* Guardamos el valor de retorno */ v = nodo->valor; /* Borrar el nodo */ delete nodo; /* Si la cola qued vaca, ultimo debe ser NULL tambin*/ if(!primero) ultimo = NULL; return v; } int main() \{ cola Cola; Cola.Anadir(20); cout << "Aadir(20)" << endl; Cola.Anadir(10); cout << "Aadir(10)" << endl; cout << "Leer: " << Cola.Leer() Cola.Anadir(40); cout << "Aadir(40)" << endl; Cola.Anadir(30); cout << "Aadir(30)" << endl; cout << "Leer: " << Cola.Leer() cout << "Leer: " << Cola.Leer() Cola.Anadir(90); cout << "Aadir(90)" << endl; cout << "Leer: " << Cola.Leer() cout << "Leer: " << Cola.Leer() cin.get();

<< endl;

<< endl; << endl; << endl; << endl;

IUTIRLA Caracas Sede Los Chaguaramos Carrera de Informtica

Estructura de Datos III Semestre

return 0; }

Conclusiones Las colas no son ms que listas lineales de informacin a las cuales se accede de un modo determinado siendo el de tipo (FIFO) lo que quiere decir que el primer dato en entrar es tambin el primer dato en salir, en las colas no se permite el acceso aleatorio a ningn elemento concreto (como ejemplo podemos imaginar la cola de un supermercado, la de un cine), las inserciones para las colas se hacen al final de la lista.

Referencias Bibliogrficas

http://www.monografias.com/trabajos38/manual-programacion http://c.conclase.net es.wikipedia.org/wiki/Cola

S-ar putea să vă placă și