PILAS (STACK)
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.Representación gráfica de una pila
Para el manejo de los datos se cuenta con dos operaciones básicas: apilar (push), que coloca un objeto en la pila, y su operación inversa, retirar (o desapilar, pop), que retira el último elemento apilado.
En cada momento sólo se tiene acceso a la parte superior de la pila, es decir, al último objeto apliado (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.
Ejemplo
Forma principal
Procedimiento: Inserción de un elemento en Pila
Algoritmo
Insercion(Pila, Cima, Elemento)
1. [¿Pila llena?]
Si Cima = MaxPila, entonces:
- Escribir: Desbordamiento (Overflow) y Volver
Cima = Cima + 1;
Pila[Cima] = Elemento
Código
void CmdInsercionClick(object sender, EventArgs e) { string elemento = txtElemento.Text; txtElemento.Text = ""; txtElemento.Focus(); if (frmPrincipal.Cima == frmPrincipal.MaxPila) { MessageBox.Show("Pila llena (Overflow)"); return; } frmPrincipal.Cima = frmPrincipal.Cima + 1; frmPrincipal.Pila[frmPrincipal.Cima] = elemento; // Inserta elemento en Pila }
Corrida
Procedimiento: Recorrido de elementos en Pila
Algoritmo
RECORRIDO(Pila, Top)
1. Apuntador = Top
2. repetir paso 3 mientras Apuntador != nulo
3. imprimir Pila(Apunatdor)
4. Apuntador = Apuntador - 1.
Fin del ciclo.
5. Salir.
Código
void CmdRecorrerClick(object sender, EventArgs e) { // Verifica si la Pila esta vacia if (frmPrincipal.Cima == -1) { MessageBox.Show("Pila Vacia (Underflow)"); return; } int i = 0; do { lsRecorrer.Items.Add(frmPrincipal.Pila[i]); i = i + 1; } while (i
PILAS ESTRUCTURA DATOS C#
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
adsl
es
https://adsltodo.es/static/images/adsl-pilas-estructura-datos-c-1754-0.jpg
2024-09-28
El contenido original se encuentra en https://programacionfacil.com/estructura_datos_csharp/pilas/
Todos los derechos reservados para el autor del contenido original (en el enlace de la linea superior)
Si crees que alguno de los contenidos (texto, imagenes o multimedia) en esta página infringe tus derechos relativos a propiedad intelectual, marcas registradas o cualquier otro de tus derechos, por favor ponte en contacto con nosotros en el mail [email protected] y retiraremos este contenido inmediatamente