Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PILAS EstructuraDeDatos-1
PILAS EstructuraDeDatos-1
.
Pilas en programación (java)
RESUMEN:
Una pila, es una estructura de datos que almacena elementos de forma lineal siguiendo una arquitectura
de tipo LIFO que se refiere a que el último elemento que entra es el primero que sale. A la hora de
implementar un stack, se puede utilizar tanto un array como una lista enlazada.
Funciona a través de dos operaciones fundamentales apilar (push), que coloca un objeto en la pila, y su
operación contraria, desapilar (pop), que retira el último elemento apilado.
Las pilas son una estructura de datos y la aplican en la solución de diversos tipos de problemas. Se
pueden ejecutar en programas distintos.
ABSTRACT:
A stack is a data structure that stores elements in a linear fashion following a LIFO-type architecture
that refers to the fact that the last element to enter is the first to leave. When implementing a stack, you
can use both an array and a linked list.
It works through two fundamental operations: push, which pushes an object onto the stack, and its
opposite operation, pop, which removes the last stacked item.
Stacks are a data structure and apply it in solving various types of problems. They can be run in
different programs.
Estructura de datos
Ingeniería de sistemas Página 2 de 26
Pilas en programación (java)
Tabla De Contenidos
Introducción ............................................................................................................................. 4
Capítulo 1. Objetivos ............................................................................................................... 5
Capítulo 2. Marco Teórico ....................................................................................................... 6
2.1 Historia de la Pila ....................................................................................................... 6
2.2 ¿Qué es una Pila? ........................................................................................................ 6
2.3 ¿Cómo se arma una Pila?............................................................................................ 8
2.3.1 Apilar ..................................................................................................................... 8
2.3.2 Desapilar ................................................................................................................ 9
2.3.3 Procedimiento ...................................................................................................... 10
2.4 Aplicaciones de las Pilas .......................................................................................... 11
2.4.1 Llamadas a subprogramas ................................................................................... 11
2.4.2 Eliminación de la Recursividad ........................................................................... 13
2.4.3 Tratamiento de expresiones aritméticas .............................................................. 14
2.5 Prueba y ejecución de pilas en java .......................................................................... 18
2.5.1 Ejemplo de las dos cajas ...................................................................................... 18
2.5.2 Como armar el pogramas de las cajas ................................................................. 18
2.5.3 Imprimir ............................................................................................................... 20
2.5.4 Borrar pantalla ..................................................................................................... 20
2.5.5 Armado del menu ................................................................................................ 21
2.5.6 Menu de opciones ................................................................................................ 22
2.5.7 Ejecución del programa ....................................................................................... 23
Capítulo 3. Conclusiones ....................................................................................................... 25
Bibliografía ............................................................................................................................ 26
Estructura de datos
Ingeniería de sistemas Página 3 de 26
Pilas en programación (java)
1. Introducción
eficiente.
Actualmente hay muchos tipos de estructuras de datos, como la estructura de datos lineales
que son aquellas donde los elementos ocupan lugares en la estructura y cada uno tiene un
sucesor y predesor, si bien este tipo de estructura se divide en tres tipos, en este caso solo nos
centramos en uno de ellas, conoceremos más acerca de las Pilas en la cual nos permite
almacenar y recuperar datos que funciona a través de dos operaciones apilar y desapilar.
Estructura de datos
Ingeniería de sistemas Página 4 de 26
Pilas en programación (java)
1. Objetivos
El objetivo de este trabajo es adquirir el conocimiento sobre el tema de las pilas y averiguar
los aspectos importantes en cuanto a lo que son las pilas en java, cuál es su historia de cómo
se creó y quien creo las pilas además de entender como es el armado de una pila para que este
pueda ejecutarse sin ningún problema ya sea la necesidad de usar nuevos métodos como
Estructura de datos
Ingeniería de sistemas Página 5 de 26
Pilas en programación (java)
2. Marco Teórico
El método de pila para la evaluación de expresiones fue propuesto en 1955 y dos años después
patentado por Friedrich L. Bauer, quien recibió en 1988 el premio “IEEE Computer society
Un stack, también conocido como pila, es una estructura de datos que almacena elementos de
forma lineal siguiendo una arquitectura de tipo LIFO (Last In – First Out) en lugar de una
arquitectura de tipo FIFO. Que utilice una arquitectura de tipo LIFO significa que el último
principalmente a través de dos operaciones clave: push y pop. Al utilizar una arquitectura
LIFO, imaginemos al stack como un cubo en el que vamos introduciendo discos. A medida
que añadimos discos al cubo estos se van apilando uno encima del otro. Esto implica que el
A su vez, en caso de querer desapilar los discos del cubo, tendremos que empezar a quitar los
discos desde la cima. Por tanto, con este ejemplo vemos claramente cómo funciona un stack,
donde tanto la función push (añadir) como la función pop (eliminar) van a actuar siempre
Estructura de datos
Ingeniería de sistemas Página 6 de 26
Pilas en programación (java)
Además de las funciones push y pop, otras de las tareas que podrá realizar un stack
son:
• Rotar: desplaza una posición hacia arriba o hacia abajo todos los elementos de la pila
(stack).
A la hora de implementar un stack, se podrá utilizar tanto un array como una lista enlazada.
El elegir una opción u otra será decisión del desarrollador del programa. No obstante, una
lista enlazada será siempre más recomendable debido a que el tamaño de un stack suele ser
dinámico.
Estructura de datos
Ingeniería de sistemas Página 7 de 26
Pilas en programación (java)
Apilar (PUSH)
más abstracta, en la que se puede ver que se está añadiendo el dato 7 sobre el dato 8,
Estructura de datos
Ingeniería de sistemas Página 8 de 26
Pilas en programación (java)
Desapilar (POP)
se los va a quitar de la misma forma. En la siguiente imagen se explica de una forma más
abstracta en la que se puede ver que se está quitando de la pila el dato 7 establecido
Después de establecer las dos operaciones fundamentales en una pila, se pueden establecer
devuelve su posición.
Estructura de datos
Ingeniería de sistemas Página 9 de 26
Pilas en programación (java)
Procedimiento
importante saber que la pila hereda de la pila (aka Vector). Y que por lo tanto podemos
• Luego vamos ir creando los elementos insertándolos en las pilas. El método que inserte
elementos a la pila es push (). Este método recibirá como perímetro ele elemento a
insertar.
• Hemos creado un bucle que nos vaya creando los números y nos hemos apoyado en la
clase Interger y su método toString (). Pará convertir los números en cadenas.
• Una vez que tenemos todos los elementos, procedemos al vaciado de la pila.
Tendremos que interactuar sobre la pila hasta que este vacía, cosa que nos dice el
método empty(). En cada cada una de las iteraciones extraeremos un elemento pila
Estructura de datos
Ingeniería de sistemas Página 10 de 26
Pilas en programación (java)
Las pilas son una estructura de datos muy usada en la solución de diversos tipos de
Llamadas a subprogramas
módulo o función, internamente se usan pilas para guardar el estado de las variables
del programa, así como las instrucciones pendientes de ejecución en el momento que
punto en cual fue interrumpido. Además de las variables se recupera la dirección del
programa la que se hizo la llamada, porque a esa posición se regresa el control del
proceso.
subprogramas A y B. A su vez, el A B
Estructura de datos
Ingeniería de sistemas Página 11 de 26
Pilas en programación (java)
Permiten guardar la
o subprograma, desde
a otros subprogramas,
ejecutándolo a partir de
la instrucción inmediata
a la llamada.
invoca a C.
Estructura de datos
Ingeniería de sistemas Página 12 de 26
Pilas en programación (java)
terminación y retorno de B.
dirección de retorno.
recursiva.
-La vuelta atrás de la recursión se consigue sacando los valores de las pilas.
Estructura de datos
Ingeniería de sistemas Página 13 de 26
Pilas en programación (java)
Utiliza una pila, donde se van almacenando la instrucciones a ejecutar con los valores
vacia.
A+B= Infija: Esta notación es Infija porque el operador (+) se encuentra entre los
operandos (A y B).
Estructura de datos
Ingeniería de sistemas Página 14 de 26
Pilas en programación (java)
+AB= Prefija: Esta es una notación Prefija, porque el operador (+) está
necesarios los paréntesis para indicar orden de operación, ya que éste queda
Para convertir una notación infija a una notación posfija se establecen ciertas
condiciones:
Estructura de datos
Ingeniería de sistemas Página 15 de 26
Pilas en programación (java)
Por ejemplo:
Expresión infija: X + Z * W
1.Se coloca el operador de tal manera que los operadores afectados por el
precedan.
▪ Expresiones Posfijas
Ejemplo.
1) 6 4 + 2 5 *+
Estructura de datos
Ingeniería de sistemas Página 16 de 26
Pilas en programación (java)
2)
quede en la pila.
Algunos errores seria ingresar algun carácter que no se puede interpretar ni como número ni
como una de las cinco operaciones validas (por ejemplo si la cadena de entrada fue “5 3 &”)
Otro seria que no haya suficientes operandos para realizar la operación (por ejemplo si la cadena
Estructura de datos
Ingeniería de sistemas Página 17 de 26
Pilas en programación (java)
Para entender mejor sobre el tema de las pilas nosotros nos planteamos el siguiente problema.
Primeramente, tomamos de ejemplo dos cajas donde la principal característica de las cajas al
agregar o poner un producto este entrará, pero si nuevamente colocamos un objeto, el primer
objeto pasará al fondo y el ultimo estará en la cima. ahora al agregar a la otra caja este primero
también pasará al fondo y el último elemento estará en la parte de la cima que será el tope de
nuestra caja
Analizando con el tema de las pilas las dos cajas son las pilas para caja 1 la pila tendrá el nombre
Para empezar con la programación de este ejemplo debemos tomar en cuenta lo que leímos
antes que es el agregar la librería Stack para que el programa reconozca que es una pila lo que
trabajaremos
import java.util.Stack;
Estructura de datos
Ingeniería de sistemas Página 18 de 26
Pilas en programación (java)
El programa debemos incluir al programa principal que este será el que una todo y se pueda
compilar dentro del programa principal es donde se recibirá los valores de la pila por ello
como trabajaremos con dos pilas tenemos que colocar dichas pilas utilizando el siguiente
código.
Es aquí donde se agrega las pilas nombrando al objeto seguidamente del nombre que tendra
Una vez ingresado las pilas tenemos que agregar nuestros datos que estaran en las pilas y con
el metodo string podremos colocar nombres mas grandes a diferncia del char que solo recibira
pocas letras . Para agregar las pilas se utiliza el push que se encargara de introducir los datos.
En la imagen podemos observar los nombres de tipo string estos seran los objetos que
pondremos en las cajas o pilas y lo agregaremos en la pila 1, por ello ponemos el nombre de
Estructura de datos
Ingeniería de sistemas Página 19 de 26
Pilas en programación (java)
Imprimir
Antes de seguir con el programa principal debemos tomar en cuenta el void imprimir que lo
Podemos observar que para hacer la impresion necesitaremos de un ciclo for y dentro de ese
ciclo en condicional if estos nos permitira hacer la impresion de los objetos de la pila que
Borrar pantalla
En java no hay una opcion de borrar las pantallas por ello simularemos un borrado de pantalla
haciendo imprimir 20 o mas lineas en blanco para poder simular dicho borrado de pantalla.
Estructura de datos
Ingeniería de sistemas Página 20 de 26
Pilas en programación (java)
Con ciclo for, y dentro del for tenga una impresion de varias teclas espacio armaremos el
borrado de pantalla el cual recorrera 20 lineas de espacio para que este simule un borrar
Para poder armar el menu del programa que nos permita realizar el cambio de los objetos a
la otra pila primero debemos de imprimir las pilas y lograr ver su comportamiento a la hora
En la siguiente imagen podemos observar que haremos imprimir los datos almacenados en la
pila ademas de imprimir varios “*** ”esto para identificar el fin de la pila y tambien para que
Estructura de datos
Ingeniería de sistemas Página 21 de 26
Pilas en programación (java)
Menu de opciones
Para realizar el menu de opciones primero realiza la impresion de la barra de menu y cuales
Una vez agregando el menú creamos un objeto para hacer leer el numero entero que se
Por ultimo dentro del programa principal realizamos la accion de hacer pasar los objetos de
la pila 1 a la pila 2 .
Estructura de datos
Ingeniería de sistemas Página 22 de 26
Pilas en programación (java)
En la primera linea de esta imagen, primero debemos poner el if para ver si se encuentra la
pila vacia y si esta vacia que no nos lance errror posteriormente procedemos a hacer el cambio
Ahora esta imagen solo es para la pila 1 , para realizar la segunda pila es practicamente lo
mismo solo cambia donde dice caja 1 entonces sera caja 2 y viceversa.
Tambien cambia el primer if que nos indica la opcion que estamos colocando en este caso si
Una vez terminado la programación tendría que salirnos como nos muestra en la imagen
posterior.
Estructura de datos
Ingeniería de sistemas Página 23 de 26
Pilas en programación (java)
Es aquí donde se evidencia que el primer objeto en ingresar este se volvera en el ultimo
elemento.
Estructura de datos
Ingeniería de sistemas Página 24 de 26
Pilas en programación (java)
3. Conclusiones
En conclusión, quedamos que las pilas fueron propuestas por Friedrich L. Bauer donde nos
indica que son estructura de datos de tipo LIFO. Usa diferentes tipos de operaciones, pero los
más importantes o más utilizados son el push y pop que son para apilar y desapilar.
Las pilas pueden ser muy útiles en diferentes aplicaciones desde matemáticamente como ser
almacenamiento de variables.
Al aplicar ejemplos de pilas en programación dimos a la conclusión que las pilas son muy
Estructura de datos
Ingeniería de sistemas Página 25 de 26
Pilas en programación (java)
Bibliografía
Amo Sanz, R., & Martín Fernández, S. (16 de julio de 2014). Pilas y Colas. Obtenido de
SlideServe: https://www.slideserve.com/ranae/pilas-y-colas
https://prezi.com/rizwicqls7so/aplicaciones-de-las-pilas/
Reyes Ortíz, J. L. (2018). Capítulo PILAS Y COLAS , PILAS. 3.1 INTRODUCCiÓN. Obtenido
de DOCPLAYER: https://docplayer.es/82395435-Capitulo-pilas-y-colas-pilas-3-1-
introduccion.html
https://www.cartagena99.com/recursos/alumnos/apuntes/prog2-tema2-Pilas-1617.pdf
https://lineadecodigo.com/java/crear-una-pila-en-java/
Estructura de datos
Ingeniería de sistemas Página 26 de 26