martes, 29 de abril de 2014

Cola Circular

/**
 * @(#)ColaCircular.java
 *  
 *  Programa para el manejo de una cola circular,
 *  donde especificamos el tamaño de la cola,
 *  insertamos los elementos de la tabla, se valida
 *  que no se desborde la tabla, que la cola no este
 *  llena. 
 *
 * @author Ricardo Camacho Lamas
 * @version 1.00 2014/4/11
 */
import java.util.Scanner;
public class ColaCircular {
       
    /**
     * Creates a new instance of <code>ColaCircular</code>.
     */
    public ColaCircular() {
    }
   
    /**
     * @param args the command line arguments
     */
    
    public static int frente=0, fin=0;          // se definen las variables requeridas
    
    public static void main(String[] args)
    {
        // TODO code application logic here
       
          int max, opcion;
          int [] colacir;
              
        Scanner ent=new Scanner(System.in);
       
        System.out.println("Tamaño de la Cola ");
        max=ent.nextInt();
        colacir=new int[max];
       
        fin = max - 1;
  frente = siguiente(fin,max);
       
        do
        {
   System.out.println("Programa para manejo de Cola Circular");
            System.out.println("-------------------------------------");
         System.out.println("         1.- Insertar ");
         System.out.println("         2.- Extraer  ");
         System.out.println("         3.- Presentar");
         System.out.println("         4.- Limpiar  ");
         System.out.println("         5.- Salir    ");
         System.out.println("-------------------------------------");
         System.out.println(" ");
       
         opcion=ent.nextInt();
       
         switch(opcion)
         {
          case 1: insertar(colacir, max);
            break;
           case 2: elimina(colacir, max);
            break;
          case 3: presentar(colacir, max);
            break;
          case 4: fin = max - 1;
            frente = siguiente(fin,max);
            break;
          case 5: break;
       
          default: System.out.println("Opcion Equivocada");
            break;
            }
        } while(opcion!=5);
    }
   
    public static int siguiente(int ptr, int max)
    {
      return (ptr+1) % max;        // % significa igual a modulo
    }
   
//    Método para INSERTAR UN ELEMENTO
    public static void insertar(int[]c, int max)
    {
     Scanner ent = new Scanner(System.in);
      if(frente==siguiente(siguiente(fin,max),max))
       System.out.println("        !!!DESBORDAMIENTO DE COLA!!!!      ");
      else{
        fin = siguiente(fin,max);
        System.out.print("Ingrese elemento <<"+fin+">> de la cola :");
        c[fin] = ent.nextInt();
      }
    }
//    Método para ELIMINAR UN ELEMENTO
    public static void elimina(int []p, int max)
  {
        if(frente==siguiente(fin,max))
          System.out.println(" !!! COLA VACIA!!!");
        else{
          System.out.println("Eliminando el elemento <<"+frente+">> = "+p[frente]);
        frente=siguiente(frente,max);
         }
    }
//    Método para PRESENTAR LOS ELEMENTOS DE UNA COLA CIRCULAR
 public static void presentar(int []p, int m)

 {
     for (int i=frente; i!=siguiente(fin,m);i++)
   System.out.println("Cola["+i+"] = "+p[i]);
    }
}

No hay comentarios.:

Publicar un comentario