Ir al contenido principal

Stack (Pila) en C#


Haca les traigo un nuevo código, les daré una breve explicación de que es el "Stack" en ingles o "Pila" en español.

Una pila (stack en inglés) es una estructura de datos de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. Se aplica en multitud de ocasiones en informática debido a su simplicidad y ordenación implícita en la propia estructura.

En cada momento sólo se tiene acceso a la parte superior de la pila, es decir, al último objeto apilado (denominado TOS, top of stack en inglés). La operación retirar permite la obtención de este elemento, que es retirado de la pila permitiendo el acceso al siguiente (apilado con anterioridad), que pasa a ser el nuevo TOS.

Por analogía con objetos cotidianos, una operación apilar equivaldría a colocar un plato sobre una pila de platos, y una operación retirar a retirarlo.


  • Las pilas suelen emplearse en los siguientes contextos:
  • Evaluación de expresiones en notación postfija (notación polaca inversa).
  • Reconocedores sintácticos de lenguajes independientes del contexto
  • Implementación de recursividad.




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;// necesario para poder declarar un "STACK"

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Stack pila = new Stack();//instancio un nuevo objeto stack(pila)

            pila.Push(1);//agrego un elemento a la pila
            pila.Push(4);
            pila.Push(1);
            pila.Push(6);
            pila.Push(3);
            pila.Push(5);
            pila.Push(9);

            for (int i = 0; i < 3; i++)//itera 3 veces para ir retirando elementos de la pila
            {          
                //pila.pop saca elementos de la pila
                Console.WriteLine("Elemento retirado de la pila: " + pila.Pop());//imprime los elementos que va retirando el .pop
                Console.WriteLine("el próximo elemento que queda en la pila es: " + pila.Peek());//muestra el elemento siguiente en la pila sin eliminarlo
                Console.WriteLine("");
            }      
            Console.ReadKey();
        }
    }
}


Saludos y espero entiendan esta breve explicación del Stack, cualquier cosa que no logren entender, no duden en preguntar en nuestro twitter o facebook que se encuentra en el costado de esta pagina.

Entradas más populares de este blog

Pares e impares en C#

Hola amigos, hoy comentare un poco de como realizar dos operaciones matemáticas que nos ayudaran en varias cosas o requerimientos en la programacion de un software. Veremos como calcular y el comparar si un numero es par o impar. Para esto usamos el algoritmo básico de una división que nos dice, Al dividir un numero n, si el resto de la división es un 0, el numero n es un par y si es 1 entonces es impar. Como podemos realizar la misma tres matemática en programacion! De la siguiente manera Tenemos : Int n = 2; If( n% 2 == 0) { Console.WriteLine(" el numero "+n+" es par"); } Else { Console.WriteLine(" el numero "+n+" es impar"); } Console.ReadKey( ); El porcentaje dentro del if, evalúa la operación, esa operación o símbolo es conocido como mod, el mod de una división es el residuo de la misma operación y como vimos anteriormente para ver si un numero es par o impar necesitábamos saber si su residuo era 1 u 0. Realicen...

Switch y Case en C#

Switch es una estructura condicional que compara una variable con una lista de posibles resultados y, cuando esta coincide, ejecuta el código que se encuentra dentro de la opción,  se puede utilizar para generar pequeños menús dentro de una aplicación, como ya vimos en publicaciones anteriores, también funciona como validador. Por ejemplo: static void Main( string [] args) { Console .WriteLine( "Elija una opcion" ); //Mensajes en pantalla Console .WriteLine( "" ); //creo un salto de linea para que se vea mas ordenada la pantalla Console .WriteLine( "****** 1 *****" ); Console .WriteLine( "****** 2 *****" ); Console .WriteLine( "" ); Console .Write( "Ingrese el numero de su opcion: " ); int opcion = Convert .ToInt32( Console .ReadLine()); //declaro una variable y le paso como parametro lo que escriba el usuario Console .WriteLine( "" ); switch (opcion) //ultilizo la variable para la opci...