sábado, 15 de junio de 2013

COLA SIMPLE (CONSOLA)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _30ABRIL2013_COLA
{
    class Cola
    {
        //ATRIBUTOS
        int[] vec;
        int p, u, tam;

        //CONSTRUCTOR
        public Cola(int n)
        {
            p = u = -1;
            tam = n;
            vec = new int[tam];
        }

        public bool esta_llena()
        {
            if (u >= tam - 1)
                return true;
            return false;
        }

        public bool esta_vacia()
        {
            if (p == -1)
                return true;
            return false;
        }

        public bool agregar(int dato)
        {
            if (!esta_llena())
            {
                vec[++u] = dato;
                if (u == 0)
                    p = 0;
                return true;
            }
            return false;
        }

        public bool extraer(ref int dato)
        {
            //ESTA VRIABLE SE USARA PARA MOVER EL DATO 1 al 0, el 2 al 1, el 3 al 2 ...
            int var = 1;

            //SI LA PILA NO ESTA VACIA:
            if (!esta_vacia())
            {
                //ENTONCES SACAMOS EL PRIMER DATO (P[O])
                dato = vec[p];

                for (int i = 0; i < vec.Length; i++)
                {
                    //SE PREGUNTA SI var ES MENOR A LA LONGITUD DEL ARREGLO, ESTO SE HACE DEBIDO A QUE var LLEGA A UN VALOR
                    //SUPERIOR A LA LONGITUD DEL ARREGLO
                    if (var < vec.Length)
                    {
                        //PASAMOS EL DATO DE UNA POSICION A OTRA
                        //EJEMPLO: vec[0]=vec[1] EL DATO EN LA POSICION 1 SE PASA A LA POSICION 0 Y ASI HASTA LA LONGITUD DEL ARREGLO
                        vec[i] = vec[var];
                        var++;
                    }
                }

                //AHORA LA VARIABLE QUE SE IRA MOVIENDO SERA u, YA QUE EL PRIMERO SIEMPRE SERA EL ELEMENTO 0
                if (u == p)
                {
                    p = u = -1;
                }
                else
                    //DECREMENTAMOS u YA QUE QUIERE DECIR QUE "HAY UN DATO MENOS EN LA COLA", EN REALIDAD EL DATO SIGUE ALLI
                    u--;
                return true;
            }
            return false;
        }


    }
}

=============================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace _30ABRIL2013_COLA
{
    class Program
    {
        static void Main(string[] args)
        {
            //DECLARACION DE VARIABLES
            int i, n, dato = 0;

            //PEDIMOS LA LONGUITUD DE LA COLA
            Console.Write("¿CUANTOS ELEMENTOS? ");
            n = Convert.ToInt32(Console.ReadLine());

            //HACEMOS LA COLA
            Cola cola = new Cola(n);

            //HACEMOS UN OBJETO DE LA CLASE RANDOM PARA LLENAR LA COLA
            Random r = new Random();

            //LE AGREGAMOS ELEMENTOS A LA COLA
            Console.WriteLine("\nINCERTANDO EN LA COLA");
            for (i = 0; i < n; i++)
            {
                dato = r.Next(100);
                if (cola.agregar(dato))
                    Console.WriteLine("Dato agregado: " + dato);
                else
                {
                    Console.WriteLine("Desbordamiento, cola llena");
                }
            }


            //LE EXTRAEMOS ELEMENTOS A LA COLA
            Console.WriteLine("\nEXTRAYENDO DATOS DE LA COLA");
            while (cola.extraer(ref dato))
            {
                Console.WriteLine("Dato extraido: " + dato);
            }
            Console.ReadKey();
        }
    }
}


2 comentarios:

  1. Porque cuando pego el codigo la parte de crear cola me marca error? :S

    ResponderEliminar
  2. uso dos clases, la primera la llamada cola en donde esta el vector y todo y en la otra clase puso solo el main donde pide datos debes agregarlo todo para que funcione

    ResponderEliminar