Como Crear un Array de Pilas en C#

Fecha: 30/Abr/2005 (9 de abril de 2005)

Autor: Marlon Chavarria Esquivel mchavarriae@gmail.com

 


El presente ejemplo muestra como realizar un arreglo de pilas.

 

Consta de tres clases, la primera de ellas es nodo.cs en el se manejan todos los elementos de la pila, la otra es pila.cs donde se manejan todos los métodos para el manejo interno de la pila, entre ellos push(), pop(), pilaVacia(), etc, el tercer y ultimo es un windows form para probar los métodos, en el evento load del form se hace un array de pilas, posteriormente se hacen dos pilas, se le ingresan valores y después se asignan estas pilas al array, posteriormente se recorre el array y se sacan los valores de cada uno de las pilas.

A continuación sigue código en Visual C#

Clase que contiene toda la ejecucion de la aplicacion windes.

Form1.cs

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace WindowsApplication1
{
    /// <summary>
    /// Descripción breve de Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        /// <summary>
        /// Variable del diseñador requerida.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Form1()
        {
            //
            // Necesario para admitir el Diseñador de Windows Forms
            //
            InitializeComponent();

            //
            // TODO: agregar código de constructor después de llamar a InitializeComponent
            //
        }

        /// <summary>
        /// Limpiar los recursos que se estén utilizando.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Código generado por el Diseñador de Windows Forms
        /// <summary>
        /// Método necesario para admitir el Diseñador. No se puede modificar
        /// el contenido del método con el editor de código.
        /// </summary>
        private void InitializeComponent()
        {
            //
            // Form1
            //
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(292, 266);
            this.Name = "Form1";
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);

        }
        #endregion

        /// <summary>
        /// Punto de entrada principal de la aplicación.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.Run(new Form1());
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            //crea el array de pilas
            pila []ap = new pila[2];
            //crea una pila
            pila p = new pila();
            p.push("pila");
            p.push("primera");
            //crea otra pila
            pila p2 = new pila();
            p2.push("pila");
            p2.push("segunda");
            //asigna las pilas a los campos del array
            ap[0] = p;
            ap[1] = p2;
            //recorre el array
            pila resul;//para almacenar el resultado
            for(int i=0; i<2; i++){//oara cada elemento del array
                resul = ap[i];
                MessageBox.Show("PILA NUMERO :" + i);
                while(!resul.pilaVacia()){//mientras esa pila no este vacia
                    MessageBox.Show(resul.pop());
                }
            }

        }
    }
}

nodo.cs

using System;

namespace WindowsApplication1
{
    /// <summary>
    /// Descripción breve de nodo.
    /// </summary>
    public class nodo
    {
        //clase que contiene el dato y los enlaces de la pila
        public string dato;
        public nodo anterior, siguiente;
        public nodo(string sDato)
        {
            dato = sDato;
        }
    }
}
 
pila.cs
 
using System;

namespace WindowsApplication1
{
    /// <summary>
    ///Implementa todos los metodos necesarios para el manejo de pilas
    /// </summary>
    public class pila
    {
        nodo cima;
        public pila()
        {
            cima = null;
        }

        public bool pilaVacia()
        {
            return (cima == null);
        }

        public void push(string dato)
        {
            nodo nuevo = new nodo(dato);
            if(!pilaVacia())
            {
                nuevo.anterior = cima;
                cima.siguiente = nuevo;
            }
            cima = nuevo;
        }//push insertar


        public string verCima()
        {
            string resultado = "";
            if(!pilaVacia())
            resultado = cima.dato;

            return resultado;
        }

        public string pop()
        {
            string d;
            if(cima.anterior == null)
            {
                d = cima.dato;
                cima = null;
            }
            else
            {
                d = cima.dato;
                cima = cima.anterior;
                cima.siguiente.anterior = null;
                cima.siguiente = null;
            }
            return d;
        }//pop eliminar

        public void eliminarPila()
        {
            string aux;
            while(!pilaVacia())
            aux = pop();
        }
    }
}

Fichero con el código de ejemplo:  mchavarriae_array_de_pilas_csharp.zip - Tamaño 9.23 KB


ir al índice