Mostrando las entradas con la etiqueta Pilas en Csharp. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Pilas en Csharp. Mostrar todas las entradas

jueves, 12 de noviembre de 2015

Pila en C# Estructura de datos

Pila

Una pila representa una estructura lineal de datos en la que se puede agregar o quitar elementos únicamente por uno de los dos extremos y puede implementarse de manera estática o dinámica.

Elementos de una pila:
Vector: Es donde se colocaran los elementos de la pila.
Máximo: Indicara el tamaño de la pila.
Cima: Apuntara al último elemento que entro a la pila.


Política:
"El ultimo que llega es el primero que  sale".

Operaciones de una pila:
Pila_llena: Regresa cierto si la cima es igual a máximo y regresa falso si cima es diferente de máximo.
Pila_vacia: Regresa cierto si la cima es -1 en caso contrario regresa falso.
Push: Agregar elementos a la pila
Pop: Sacar elementos de la pila

Algoritmo de la clase pila programado en C#

using System;
using System.Windows.Forms;
//en la parte de using System; se pone esta línea para poder usar los MessageBox.Show("");

namespace PilaEjemplo
{
class Pilas
    {
        private int maximo;
        private int cima;
        private int[] lapila;

        public Pilas() { }

        public Pilas(int max)
        {
            lapila = new int[max];
            maximo = max;
            cima = -1;
        }

        public Boolean pila_llena()
        {
            if (cima == maximo-1)
            { return true; }

            else
            { return false; }

        }

        public Boolean pila_vacia()
        {
            if (cima == -1)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        public void push(int n)
        {
            if (pila_llena() == true)
            {
                MessageBox.Show("Pila llena");
            }

            else
            {
                cima++; lapila[cima] = n;
            }
        }

        public int pop()
        {
            int n = 0;
            if (pila_vacia() == true)
            {
                MessageBox.Show("Pila vacia");
                return n;
            }

            else
            {
                n = lapila[cima];
                cima--;
                return n;
            }
        }
    }
}

Ejemplo:

Se creo una aplicación con el siguiente diseño:
Se les cambio la propiedad "name" a los Button y TextBox 

-Al TextBox que esta a la derecha de donde dice Maximo se le puso en la propiedad name txtmaximo
-Al TextBox que esta a la derecha de donde dice Numero se le puso en la propiedad name txtnumero
-Al boton Push se le cambio la propiedad name por btnpush
-Al boton Pop se le cambio la propiedad name por btnpop
-Al boton Crear se le cambio la propiedad name por btncrear

Código de la aplicación usando la clase pilas:

namespace PilaEjemplo
{
    public partial class Form1 : Form
    {
        Pilas objeto = new Pilas();

        public Form1()
        {
            InitializeComponent();
        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void btncrear_Click(object sender, EventArgs e)
        {
            int m = int.Parse(txtmaximo.Text);
            objeto = new Pilas(m);
            MessageBox.Show("Pila Creada");
        }

        private void btnpush_Click(object sender, EventArgs e)
        {
            int n = int.Parse(txtnumero.Text);
            objeto.push(n);
            txtnumero.Clear();
            txtnumero.Focus();
        }

        private void btnpop_Click(object sender, EventArgs e)
        {
            int n;
            n = objeto.pop();
            MessageBox.Show("Salio:" + n);
        }
    }
}