//////////////////////////clase pila
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Pilas
{
public class ClasePila
{
private readonly int Max; // Tamaño de la pila
private int Top; // Cantidad de datos almacenados
private int[] Arreglo; // Arreglo de la pila
// Constructor que recibe el Tamaño de la pila
public ClasePila(int Tamaño)
{
Top = 0; // Inicializa la pila vacía
Max = Tamaño; // Define el tamaño de la pila
Arreglo = new int[Tamaño]; // Crea el arreglo
}
// Método para determinar si la pila está llena
private bool EstaLlena()
{
if (Top == Max)
return (true);
else
return (false);
}
// Método para determinar si la pila está vacía
private bool EstaVacia()
{
if (Top == 0)
return (true);
else
return (false);
}
// Método para insertar un dato en la pila
public bool Push(int dato)
{
if (!EstaLlena()) // Si no está llena ...
{
Arreglo[Top] = dato; // Inserta el dato
Top++; // Incrementa la cantidad de datos almacenados
return (true); // Dato insertado con éxito
}
else
return (false); // No se insertó el dato
}
// Método para eliminar el último dato insertado en la pila
public bool Pop()
{
if (!EstaVacia()) // Si no está vacía ...
{
Top--; // Disminuye la cantidad de datos almacenados
return (true); // Dato eliminado con éxito
}
else
return (false); // No se eliminó el dato
}
// Método para mostrar en pantalla los datos de la pila
public string Mostrar()
{
string Resultado = "\n"; // Inicializa el resultado
if (!EstaVacia()) // Si no está vacía ...
{
// Ciclo para recorrer el arreglo de la pila
for (int i = 0; i <= Top - 1; i++)
Resultado = Resultado + "\n[" + i.ToString()+"] -> "+Arreglo[i].ToString();
Resultado = Resultado + "\n\nTop = " + Top.ToString(); // Mostrar el Top
Resultado = Resultado + "\nMax = " + Max.ToString(); // Mostrar el Max
}
else
Resultado="\n\nPila vacía !!!";
return (Resultado); // Devolver el Resultado
}
// Método para eliminar todos los datos de la pila
public void Vaciar()
{
// Se inicializa a cero la cantidad de elementos almacenados en la pila
Top = 0;
}
}
}
///////////////////////program
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Pilas
{
class Program
{
static ClasePila Pila = new ClasePila(10); // Declaración del objeto de la Pila
public static void Main(string[] args)
{
Int16 opcion = 0;
do
{
Console.Clear();
Console.WriteLine("P I L A S");
Console.WriteLine("\n1.- Insertar dato (PUSH)");
Console.WriteLine("2.- Eliminar dato (POP)");
Console.WriteLine("3.- Mostrar datos de la Pila");
Console.WriteLine("4.- Eliminar todos los datos de la Pila (VACIAR)");
Console.WriteLine("0.- Salir");
Console.Write("\n\nOpcion ? ");
opcion = Int16.Parse(Console.ReadLine());
switch (opcion)
{
case 1: InsertarEnPila(); break;
case 2: EliminarEnPila(); break;
case 3: MostrarDatos(); break;
case 4: VaciarPila(); break;
}
} while (opcion != 0);
}
public static void InsertarEnPila()
{
int Dato = 0;
Console.Clear();
Console.WriteLine("INSERTAR DATO EN LA PILA");
Console.Write("\nNúmero entero ? ");
Dato = int.Parse(Console.ReadLine()); // Se captura el número que se desea insertar
// Se ejecuta el método Push del objeto Pila
if(Pila.Push(Dato))
Console.WriteLine("\nDato insertado en la pila !!!");
else
Console.WriteLine("\nPila llena ...");
Console.ReadKey();
}
public static void EliminarEnPila()
{
Console.Clear();
Console.WriteLine("ELIMINAR El ÚLTIMO DATO ALMACENADO EN LA PILA");
// Se ejecuta el método Push del objeto Pila
if (Pila.Pop())
Console.WriteLine("\nDato eliminado de la pila !!!");
else
Console.WriteLine("\nPila vacía ...");
Console.ReadKey();
}
public static void MostrarDatos()
{
Console.Clear();
Console.WriteLine("DATOS ALMACENADOS EN LA PILA");
// Se ejecuta el método para mostrar los datos de la pila
Console.WriteLine(Pila.Mostrar());
Console.ReadKey();
}
public static void VaciarPila()
{
char sn;
Console.Clear();
Console.WriteLine("ELIMINAR TODOS LOS ELEMENTOS DE LA PILA (VACIAR)\n");
// Solicita al usuario que confirme la operación
do
{
Console.Write("¿Está seguro que desea vaciar la pila [S/N] ?");
sn = char.Parse(Console.ReadLine());
sn = Char.ToUpper(sn); // Convierte a mayúsculas el caracter capturado
} while (sn != 'S' && sn != 'N');
if (sn == 'S')
{
Pila.Vaciar(); // Invoca el método correspondiente
Console.WriteLine("\n\nSe eliminaron todos los elementos de la pila !!!");
Console.ReadKey();
}
}
}
}
No hay comentarios.:
Publicar un comentario
Es muy importante tu comentarios: