Sunteți pe pagina 1din 5

Colas.

Concepto Una cola es una lista en las que las supresiones se realizan solamente al principio de la lista y las inserciones al final de la misma. Al igual que en el caso de las pilas, hay que prever un vector para almacenar el mximo nmero de elementos que puedan presentarse en el programa. A diferencia de las pilas, no basta con aadir un simple contador, tal que indique el nmero de elementos vlidos; sino hay que prever dos ndices que indiquen la posicin del comienzo y del final de la cola. Si la cola no est vaca, en CABEZA est el primer elemento, y si la cola no est llena, en FIN es el lugar donde se copia el siguiente elemento que se incorpora a la misma. REPRESENTACIN DE LAS COLAS Las colas se usan para almacenar datos que necesitan ser procesados segn el orden de llegada. En la vida real se tienen ejemplos numerosos de colas: la cola de un cine, la cola de un banco, etc; en todas ellas el primer elemento que llega es el primero que sale. Todo tipo de colas a) Una lnea, un servidor El primer sistema que se muestra se llama un sistema de un servidor y una cola o puede describir una consulta de un mdico. b) Una lnea, mltiples servidores El segundo, una lnea con mltiples servidores, es tpico de una peluquera o una panadera en donde los clientes toman un nmero al entrar y se les sirve cuando les llega el turno. c) Varias lneas, mltiples servidores El tercer sistema, en que cada servidor tiene una lnea separada, es caracterstico de los bancos y las tiendas de autoservicio. Para este tipo de servicio pueden separarse los servidores y tratarlos como sistemas independientes de un servidor y una cola. Esto sera vlido slo si hubiera muy pocos intercambios entre las colas. Cuando el intercambio es sencillo y ocurre con frecuencia, como dentro de un banco, la separacin no sera vlida. Caractersticas Existen dos clases bsicas de tiempo entre llegadas: Determinstico, en el cual clientes sucesivos llegan en un mismo intervalo de tiempo, fijo y conocido. Un ejemplo clsico es el de una lnea de ensamble, en donde los artculos llegan a una estacin en intervalos invariables de tiempo (conocido como ciclos de tiempo) Probabilstico, en el cual el tiempo entre llegadas sucesivas es incierto y variable. Los tiempos entre llegadas probabilsticos se describen mediante una distribucin de probabilidad. En el caso probabilstico, la determinacin de la distribucin real, a menudo, resulta difcil. Sin embargo, una distribucin , la distribucin exponencial, ha probado ser confiable en muchos de los problemas prcticos. La funcin de densidad, para una distribucin exponencial depende de un parmetro, digamos l (letra griega lambda), y est dada por: f(t)=(1/ l )e- l t en donde l (lambda) es el nmero promedio de llegadas en una unidad de tiempo.

Con una cantidad, T, de tiempo se puede hacer uso de la funcin de densidad para calcular la probabilidad de que el siguiente cliente llegue dentro de las siguientes T unidades a partir de la llegada anterior, de la manera siguiente: P(tiempo entre llegadas <=T)=1-e- l t Ejemplos import javax.swing.*;

public class ColaJava { static Cola accion=new Cola(); public static void main(String[] args) { int opc=0; while(true){ opc=Integer.parseInt(JOptionPane.showInputDialog(null, "---------------------------------------\n" + "Cola en Java\n" "---------------------------------------\n" + "1. Introducir dato\n" "2. Sacar dato\n" "3. Ver datos introducidos\n" "4. Borrar los datos de la cola\n" "---------------------------------------\n" + "5. Salir\n" "---------------------------------------\n" + "Teclea el numero de la accion a relizar:" )); switch(opc){ case 1: accion.Introducir(); break; + + + + + +

case 2: accion.Sacar(); break; case 3: accion.Mostrar(); break; case 4: accion.Borrar(); break; case 5: System.exit(0); break; default: JOptionPane.showMessageDialog(null,"No se realizo ninguna accion\nOpcion no valida"); break; } } } } class Cola{ int tamao=5; String cola[]=new String [tamao]; int frente=0; int ultimo=-1; public void Introducir(){ if(ultimo==cola.length-1){ JOptionPane.showMessageDialog(null,"No se realizo ninguna accion"); JOptionPane.showMessageDialog(null,"La cola esta llena\nSaca un dato para poder introducir uno nuevo"); } else{ ultimo++;

cola[ultimo]=JOptionPane.showInputDialog(null,"Que dato deseas introducir:"); } } public void Sacar(){ if(ultimo==-1){ JOptionPane.showMessageDialog(null,"No se realizo ninguna accion"); JOptionPane.showMessageDialog(null,"La cola esta vacia\nIntroduce un nuevo dato para poder sacar uno"); } else{ JOptionPane.showMessageDialog(null,"Se saco el dato ( "+cola[frente]+" )"); for(int i=frente;i<ultimo;i++){ cola[i]=cola[i+1]; } cola[ultimo]=null; ultimo--; } } public void Mostrar(){ if(ultimo==-1){ JOptionPane.showMessageDialog(null,"La cola esta vacia\nNo hay datos que mostrar"); } else{ String mostrar=""; for(int i=frente;i<=ultimo;i++){ mostrar=mostrar+cola[i]; }

JOptionPane.showMessageDialog(null,"El dato frente es: "+cola[frente]); JOptionPane.showMessageDialog(null,"El dato ultimo es: "+cola[ultimo]); JOptionPane.showMessageDialog(null,"Los datos almacenados son:\n"+mostrar); } } public void Borrar(){ frente=0; ultimo=-1; JOptionPane.showMessageDialog(null,"Todos los datos fueron borrados:\n"); } }

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