예제 #1
0
        static void VaciarPila(PilaDoble arreglo, int numPila)
        {
            string datoLeido;
            bool   pilaVacia;

            do
            {
                if (numPila == 1)
                {
                    datoLeido = arreglo.Pop1();
                }
                else if (numPila == 2)
                {
                    datoLeido = arreglo.Pop2();
                }
                else
                {
                    throw new Exception("Sólo se admite pila #1 o pila #2 en numPila");
                }

                pilaVacia = datoLeido == null;

                if (!pilaVacia)
                {
                    Console.WriteLine(datoLeido);
                }
            } while (!pilaVacia);
        }
예제 #2
0
        public static void Mostrar()
        {
            int       TAM_ARR_IMPAR, TAM_ARR_PAR;
            PilaDoble arrPar, arrImpar;

            // Decidiendo el tamaño de los arreglos de pila
            Console.Clear();
            Console.WriteLine("Dame el tamaño del arreglo PAR:");
            TAM_ARR_PAR = Int32.Parse(Console.ReadLine());
            Console.WriteLine("Dame el tamaño del arreglo IMPAR:");
            TAM_ARR_IMPAR = Int32.Parse(Console.ReadLine());

            arrPar   = new PilaDoble(TAM_ARR_PAR);
            arrImpar = new PilaDoble(TAM_ARR_IMPAR);

            // Manejo de un arreglo con tamaño PAR
            Console.WriteLine("Provee datos para la pila 1 (arreglo par)");
            LlenarPila(arrPar, TAM_ARR_PAR / 2, 1);

            Console.WriteLine("\nProvee datos para la pila 2 (arreglo par)");
            LlenarPila(arrPar, TAM_ARR_PAR / 2, 2);

            Console.WriteLine("\nÉstos son los contenidos de la pila 1 (par):");
            VaciarPila(arrPar, 1);

            Console.WriteLine("\nÉstos son los contenidos de la pila 2 (par):");
            VaciarPila(arrPar, 2);

            // Manejo de un arreglo con tamaño IMPAR
            Console.WriteLine("\n----------------------------------------------");
            Console.WriteLine("\nProvee datos para la pila 1 (arreglo impar)");
            LlenarPila(arrImpar, TAM_ARR_IMPAR / 2, 1);

            Console.WriteLine("\nProvee datos para la pila 2 (arreglo impar)");
            LlenarPila(arrImpar, (TAM_ARR_IMPAR / 2) + 1, 2);

            Console.WriteLine("\nÉstos son los contenidos de la pila 1 (impar):");
            VaciarPila(arrImpar, 1);

            Console.WriteLine("\nÉstos son los contenidos de la pila 2 (impar):");
            VaciarPila(arrImpar, 2);

            Console.WriteLine("\nPRESIONE CUALQUIER TECLA PARA VOLVER AL MENÚ...");
            Console.ReadKey();
        }
예제 #3
0
        static void LlenarPila(PilaDoble arreglo, int numDatos, int numPila)
        {
            string nuevoDato;

            for (int i = 0; i < numDatos + 1; i++)
            {
                nuevoDato = Console.ReadLine();

                if (numPila == 1)
                {
                    arreglo.Push1(nuevoDato);
                }
                else if (numPila == 2)
                {
                    arreglo.Push2(nuevoDato);
                }
                else
                {
                    throw new Exception("Sólo se admite pila #1 o pila #2 en numPila");
                }
            }
        }