jueves, 18 de octubre de 2012

COLAS


Definición.

Una cola constituye una estructura lineal de datos en la que los nuevos elementos se
introducen por un extremo y los ya existentes se eliminan por el otro. Es importante
señalar que los componentes de la cola se eliminan en el mismo orden en el cual se
insertaron.Es decir, el primer elemento que se introduce en la estructura será el que
se eliminará en primer orden.



Política.

Las colas también reciben el nombre de estructuras FIFü (First-In, First-Out: el primero en entrar es el primero en
salir).

Elementos.

Cuando se implementan con arreglos unidimensionales, es importante definir un
tamaño máximo para la cola y dos variables auxiliares. Una de ellas para que almacene
la posición del primer elemento de la cola -FRENTE- y otra para que guarde:
la posición del último elemento de la cola -FINAL-.

Operaciones con colas.

Insertar un elemento en la cola. Las inserciones se llevaran a cabo por el FINAL.
Eliminar un elemento de la cola. La eliminaciones se harán por el FRENTE.
Cola vacía. Es un método que nos indica si la cola esta vacía.
Cola llena. Es un método que nos dice si la cola esta llena.

Algoritmos.

Insertar

Inserta_cola(COLA,MAX,FRENTE,FINAL,DATO)
{Este algoritmo inserta el elemento DATO al final de una estructura tipo cola. FRENTE y FINAL son los punteros
que indican, respectivamente, el inicio y fin de COLA. La primera vez FRENTE y FINAL tienen el valor 0, ya que
la cola esta vacía. MAX es el máximo numero de elementos que puede almacenar la cola.}


Eliminar

Elimina_cola(COLA,FRENTE,FINAL,DATO)
{Este algoritmo elimina el primer elemento de una estructura tipo cola y lo almacena en DATO. FRENTE y FINAL
son los punteros que indican, respectivamente, el inicio y fin de la cola.}


Cola vacía

Cola_vacía(COLA,FRENTE,BAND)
{Este algoritmo determina si una estructura de tipo cola esta vacía, asignando a BAND el valor de verdad
correspondiente.}

        1. Si (FRENTE = 0)







Cola llena

Cola_llena(COLA,FINAL,MAX,BAND)
{Este algoritmo determina si una estructura de tipo cola esta llena, asignando a BAND el valor de verdad
correspondiente. MAX es el numero máximo de elementos que puede almacenar COLA.}

Aplicaciones.

Una aplicación común de las colas se presenta cuando se envía a imprimir algún documento o programa
en las colas de impresión. Cuando hay una sola impresora para atender a varios usuarios, suele suceder
que algunos de ellos soliciten los servicios de impresión al mismo tiempo o mientras el dispositivo este
ocupado. En estos casos se forma una cola con los trabajos que esperan para ser impresos; estos se procesaran en el orden el cual fueron introducidos en la cola.




1 comentario:

  1. Hola, oye podrias ayudarnos con un codigo que es para insertar un nodo antes de otro nodo dado.. nos aparece error en los else

    Te dejo el codigo ... por favor

    #include
    #include



    struct nodo {//inicio struct
    char apellido[20];
    nodo *liga;
    };//fin struct



    void main(void){//inicio main

    int res=0,res2=0;
    nodo *p,*q,*t,*x,*aux;
    char buscar[20];
    char dato[20];
    p=new nodo;


    cout<<"Ingresa el apellido: "<apellido);

    p->liga=NULL;
    t=p;

    cout<<"Desea agregar más nodos? SI:1, NO:2"<>res;
    while(res==1)
    {// inicio while mas nodos
    q=new nodo;
    cout<<"Ingresa el apellido: "<apellido);
    q->liga=NULL;
    t->liga=q;
    t=q;
    cout<<"Desea agregar más nodos? SI:1, NO:2"<>res;
    }//fin while mas nodos

    //RECORRIDO 1
    aux=p;
    while(aux!=NULL)
    {//inicio while r1
    cout<apellido<liga;
    }//fin while r1

    // INSERTA ANTES DE OTRO NODO
    cout<<"Desea insertar un nodo: 1:SI 2:NO"<>res2;
    if(res2==1)
    {
    cout<<"Antes de de que nodo lo deseas agregar: "<apellido!=buscar) && (ban==1)){// inicio while buscar
    cout<<"Entro al while"<liga!=NULL){//inicio if
    cout<<"Entro al if (q->liga!=NULL)"<liga;

    else
    //inicio else
    // cout<<"Bandera=0"<liga=null
    }// fin while buscar

    if(ban==1){//inicio si bandera es 1
    x=new nodo;
    strcpy(x->apellido, dato);
    cout<<"Entro if band=1"<liga=p;
    p=x;


    else

    t->liga=x;
    x->liga=q;


    }//fin del if p=q
    else

    cout<<"El nodo no se encuentra"<apellido<liga;
    }//fin del while r2
    }//fin main

    Saludos

    ResponderEliminar