{
class BuscarEnCola
{
public void BuscarElementoCola()
{
bool encontrada = false;
int posicion = 0;
int buscar;
int z = 1;
buscar = FrmPilasyColas.valorBuscado;
while (z <= FrmPilasyColas.cantidadMaxima)
{
foreach (int valor in FrmPilasyColas.Cola)
{
if (buscar == valor)
{
encontrada = true;
posicion = z;
}
z = z + 1;
}
}
if (encontrada == true)
{
MessageBox.Show("Se encontró el valor en la posición : " + posicion);
}
else
{
MessageBox.Show("No se encontró el valor");
}
}
}
}
namespace usandoPilasColasDanielGarcia
{
class BuscarEnPila
{
public void BuscarElementoPila()
{
bool encontrada = false;
int posicion = 0;
int buscar;
int z = 1;
buscar = FrmPilasyColas.valorBuscado;
while (z <= FrmPilasyColas.cantidadMaxima)
{
foreach (int valor in FrmPilasyColas.Pila)
{
if (buscar == valor)
{
encontrada = true;
posicion = z;
}
z = z + 1;
}
}
if (encontrada == true)
{
MessageBox.Show("Se encontró el valor en la posición : " + posicion);
}
else
{
MessageBox.Show("No se encontró el valor");
}
}
}
}
namespace usandoPilasColasDanielGarcia
{
class ValidarEnteros
{
public static void SoloEnteros(KeyPressEventArgs v)
{
if (char.IsDigit(v.KeyChar))
{
v.Handled = false;
}
else if (char.IsSeparator(v.KeyChar))
{
v.Handled = false;
}
else if (char.IsControl(v.KeyChar))
{
v.Handled = false;
}
else if (v.KeyChar.ToString().Equals(","))
{
v.Handled = true;
MessageBox.Show("Solo se permiten números");
}
else if (v.KeyChar.ToString().Equals("."))
{
v.Handled = true;
MessageBox.Show("Solo se permiten números");
}
else
{
v.Handled = true;
MessageBox.Show("Solo se permiten números");
}
}
}
}
namespace usandoPilasColasDanielGarcia
{
public partial class FrmPilasyColas : Form
{
public FrmPilasyColas()
{
InitializeComponent();
TxtTamanoPilaCola.Focus();
}
// se definen las variables pulicas, se definen las pilas y se definen los contadores
public static int cantidadMaxima { get; set; }
public static int casoSwitch { get; set; }
public static int valorBuscado;
public int agregarElemento;
public static int contador = 0;
public static Stack<int> Pila = new Stack<int>();
public static Stack<int> Pila1 = new Stack<int>();
public static Queue<int> Cola = new Queue<int>();
public static Queue<int> Cola1 = new Queue<int>();
List<int> ListaPila = new List<int>();
List<int> ListaCola = new List<int>();
//En este evento se valida que el campo que indica el tamaño de la pila y de la cola no esté vacío
private void BtnCrearPilaCola_Click(object sender, EventArgs e)
{
if (TxtTamanoPilaCola.Text == "")
{
//se da un mensaje de que el campo esta vacío y se pone el mouse en el campo de texto a llenar
MessageBox.Show("Debe definir un tamaño para la Pila y la Cola");
TxtTamanoPilaCola.Focus();
}
else
{
//se captura el dato y se invalida el campo para que no se cambie el tamaño
cantidadMaxima = int.Parse(TxtTamanoPilaCola.Text);
TxtTamanoPilaCola.Enabled = false;
}
}
// se muestran los elementos en la pila y cola respectivamente
private void BtnMostarElementos_Click(object sender, EventArgs e)
{
LvPila.Clear();
LvCola.Clear();
TxtBuscarElemento.Text = "";
foreach (int valor in Pila)
{
ListViewItem numero = new ListViewItem();
numero = LvPila.Items.Add(valor.ToString());
}
foreach (int valor in Cola)
{
ListViewItem numero = new ListViewItem();
numero = LvCola.Items.Add(valor.ToString());
}
}
private void BtnBuscarElementoCola_Click(object sender, EventArgs e)
{
valorBuscado = int.Parse(TxtBuscarElemento.Text);
if (TxtBuscarElemento.Text == "")
{
MessageBox.Show("El campo se encuentra vacio");
}
else
{
BuscarEnCola busqueda = new BuscarEnCola();
busqueda.BuscarElementoCola();
}
}
private void BtnBuscarElementoPila_Click(object sender, EventArgs e)
{
valorBuscado = int.Parse(TxtBuscarElemento.Text);
if (TxtBuscarElemento.Text == "")
{
MessageBox.Show("El campo se encuentra vacio");
}
else
{
BuscarEnPila busqueda = new BuscarEnPila();
busqueda.BuscarElementoPila();
}
}
private void BtnEliminarElemento_Click(object sender, EventArgs e)
{
if (TxtBuscarElemento.Text == "")
{
MessageBox.Show("El campo está vacio");
}
else
{
valorBuscado = int.Parse(TxtBuscarElemento.Text);
LvPila.Clear();
for (int i = 0; i < ListaPila.Count; i++)
{
if (ListaPila[i]==valorBuscado)
{
ListaPila.RemoveAt(i);
i--;
}
LvPila.Items.Add(Convert.ToString(ListaPila[i]));
}
LvCola.Clear();
for (int j = 0; j < ListaCola.Count; j++)
{
if (ListaCola[j] == valorBuscado)
{
ListaCola.RemoveAt(j);
j--;
}
LvCola.Items.Add(Convert.ToString(ListaCola[j]));
}
MessageBox.Show("Debe dar otro click para mostrar la nueva lista");
}
}
private void BtnAgregarElemento_Click(object sender, EventArgs e)
{
// se valida que exista información en el cuadro de texto
if (TxtAgregarElemento.Text == "")
{
// si no hay texto se envia un mensaje y se pone el mouse en el campo a llenar
MessageBox.Show("Debe ingresar un valor a agregar a la Pila y Cola");
TxtAgregarElemento.Focus();
}
else
{
if (contador < cantidadMaxima)
{
agregarElemento = int.Parse(TxtAgregarElemento.Text);
Pila.Push(agregarElemento);
Cola.Enqueue(agregarElemento);
TxtAgregarElemento.Text = "";
contador++;
ListaCola.Add(agregarElemento);
ListaPila.Add(agregarElemento);
}
else
{
MessageBox.Show("La Pila y la Cola estan llenas");
TxtAgregarElemento.Text = "";
}
}
}
private void BtnSalir_Click(object sender, EventArgs e)
{
if (contador < cantidadMaxima)
{
MessageBox.Show("Termine de ingresar los elementos para poder salir");
}
else
{
Close();
}
}
private void TxtTamanoPilaCola_KeyPress(object sender, KeyPressEventArgs e)
{
ValidarEnteros.SoloEnteros(e);
}
private void TxtAgregarElemento_KeyPress(object sender, KeyPressEventArgs e)
{
ValidarEnteros.SoloEnteros(e);
}
private void TxtBuscarElemento_KeyPress(object sender, KeyPressEventArgs e)
{
ValidarEnteros.SoloEnteros(e);
}
private void BtnEliminarElemento_MouseHover(object sender, EventArgs e)
{
//MessageBox.Show("Con un click se reemplaza el valor y con un segundo click se elimina la posición del valor");
}
}
}
En la parte superior nos vamos a encontrar con 3 textbox con su respectiva etiqueta, las cuáles indican que tipo de datos debemos escribir. A su vez, cada textbox tiene una propia validación por si se intenta ingresar datos no permitidos.
En la parte de la mitad nos podemos encontrar con todos los botones que tiene la aplicación y con los cuales el usuario podrá interactuar. Cada botón tiene sus respectivas validaciones que se irán mostrando a medida que el usuario ingrese información no permitida o intente usar un botón sin previamente haber llenado el textbox correspondiente.
En la parte inferior encontramos los listView que nos permitiran ver el contenido de nuestra Pila y nuestra Cola.
- Ingresar el tamaño de la Pila y de la Cola
- Presionar el botón para la creación de la Pila y de la Cola
- Introducir el valor que se dese agregar en la Pila y en la Cola
- Apretar el botón para agregar el elemento. (repetir el paso 3 las veces que el sistema lo permita)
- Apretar el botón para ver como quedaron la Pila y la Cola
- Si se desea buscar algún elemento. Introducir el elemento deseado en el textbox correspondiente
- Apretar el botón buscar de Pila o de Cola.
- Por último, si se desea eliminar un elemento. Debemos introducir el valor del elemento que se desea eliminar en el textbox de buscar elementos .
- Luego se aprieta el botón eliminar para eliminar el elemento. (Para ver la lista actualizada se debe hacer click dos veces)

