Este sitio web usa cookies de terceros para analizar el tráfico y personalizar los anuncios. Si no está de acuerdo, abandone el sitio y no siga navegando por él. ×


11.7. Cómo imitar una pila usando arrays

Las estructuras dinámicas se pueden imitar usando estructuras estáticas sobredimensionadas, y esto puede ser un ejercicio de programación interesante. Por ejemplo, podríamos imitar una pila dando los siguientes pasos:

El fuente podría ser así:

// Ejemplo_11_07a.cs
// Ejemplo de clase "Pila" basada en un array
// Introducción a C#, por Nacho Cabanes

using System;

public class PilaString
{
    string[] datosPila;
    int posicionPila;
    const int MAXPILA = 200;

    // Constructor
    public PilaString()
    {
        posicionPila = 0;
        datosPila = new string[MAXPILA];
    }

    // Añadir a la pila: Apilar
    public void Apilar(string nuevoDato)
    {
        if (posicionPila == MAXPILA)
            Console.WriteLine("Pila llena!");
        else
        {
            datosPila[posicionPila] = nuevoDato;
            posicionPila ++;
        }
    }

    // Extraer de la pila: Desapilar
    public string Desapilar()
    {
        if (posicionPila < 0)
            Console.WriteLine("Pila vacia!");
        else
        {
            posicionPila --;
            return datosPila[posicionPila];
        }
        return null;
    }


    public static void Main()
    {
        string palabra;

        PilaString miPila = new PilaString();
        miPila.Apilar("Hola,");
        miPila.Apilar("soy");
        miPila.Apilar("yo");

        for (byte i=0; i<3; i++)
        {
            palabra = (string) miPila.Desapilar();
            Console.WriteLine( palabra );
        }
    }  // Fin del Main de prueba

}  // Fin de la clase

Ejercicios propuestos:

Ejercicio propuesto 11.7.1: Usando esta misma estructura de programa, crea una clase "Cola", que permita introducir datos (números enteros) y obtenerlos en modo FIFO (el primer dato que se introduzca debe ser el primero que se obtenga). Debe tener un método "Encolar" y otro "Desencolar".
Ejercicio propuesto 11.7.2: Crea una clase "ListaOrdenada", que almacene un único dato, un "string" (no un par clave-valor como los SortedList). Debe contener un método "Insertar", que añadirá un nuevo dato en orden en el array, y un "Extraer(n)", que obtenga un elemento de la lista (el número "n"). Crea también un método "ObtenerCantidad()", que devolverá un entero, que será la cantidad de datos que hay en la lista, de forma que se pueda recorrer con un "for"
Ejercicio propuesto 11.7.3: Prepara una pila de "doubles", usando internamente un ArrayList en vez de un array. Incluye también un programa de prueba.
Ejercicio propuesto 11.7.4: Crea una cola que almacene un bloque de datos (struct, con los campos que tú elijas, como por ejemplo un punto con coordenadas X e Y) usando un ArrayList.
Ejercicio propuesto 11.7.5: Crea una lista ordenada (de "strings"), como la del ejercicio 11.7.2, pero esta vez usando un ArrayList.