Sunteți pe pagina 1din 12

ESTRUCTURAS DINÁMICAS DE DATOS 1

Introducción

Una pila (stack en inglés) es una lista ordenada o estructura de


datos en la que el modo de acceso a sus elementos es de tipo LIFO (del
inglés Last In First Out, último en entrar, primero en salir) que permite
almacenar y recuperar datos. Como similitud se puede asociar a un
almacenamiento de libros formando una pila, en la que se almacenan
uno sobre otro, los nuevos elementos se apilan sobre el último, y
cuando se retiran se extrae el último que se ha apilado.

Las pilas son estructuras de datos generalmente estáticas ya que


regularmente se crean usando la implementación de arreglos, y como se
sabe: su tamaño no puede crecer en memoria en tiempo
de ejecución es decir, debemos establecer un tamaño fijo de elementos
que se guardaran en la pila. Las Stack tienen 2
operaciones básicas: push (apilar, insertar) y pop (desapilar o eliminar),
aunque se puede implementar más métodos a una pila para obtener
alguna otra información que se requiera.

PILAS – Universidad Nacional De Cajamarca 1


ESTRUCTURAS DINÁMICAS DE DATOS 2

DESARROLLO TEMÁTICO

Una pila o stack es una lista de elementos a la cual se le pueden insertar o


extraer elementos solo por uno de sus extremos. Las pilas son estructuras de
datos en las que la inserción de datos se hace por el frente y la eliminación de
los datos de igual manera se hace por el frente, se elimina un dato por el mismo
lado de donde se inserta; debido a esta característica de inserción y eliminación
de datos también se le conoce como estructura LIFO (Last-In, First-Out) o UEPS
(último en entrar, primero en salir). El miembro de enlace en el nodo inferior (es
decir, el último) de la pila se establece en null para indicar el fondo de la pila.

Los métodos básicos para manipular una pila son push (empujar) y pop (sacar).
El método push agrega un nuevo nodo a la parte superior de la pila. El método
pop elimina un nodo de la parte superior de la pila y devuelve los datos del
nodo que se quitó.

 UTILIDAD:

Las pilas son frecuentemente utilizadas en el desarrollo de sistemas


informáticos y software en general. Por ejemplo, el sistema de soporte en
tiempo de compilación y ejecución del Pascal utiliza una pila para llevar la
cuenta de los parámetros de procedimientos y funciones, variables locales,
globales y dinámicas. Este tipo de estructuras también son utilizadas para
traducir expresiones aritméticas o cuando se quiere recordar una secuencia de
acciones u objetos en el orden inverso del ocurrido.

PILAS – Universidad Nacional De Cajamarca 2


ESTRUCTURAS DINÁMICAS DE DATOS 3

Las pilas tienen muchas aplicaciones interesantes. Por ejemplo, cuando un


programa llama a un método, el método llamado debe saber cómo regresar a su
invocador, por lo que la dirección de retorno del método que hizo la llamada se
mete en la pila de ejecución del programa. Si ocurre una serie de llamadas a
métodos, las direcciones de retorno sucesivas se meten en la pila en el orden
“último en entrar, primero en salir”, para que cada método pueda regresar a su
invocador. Las pilas soportan llamadas recursivas a métodos de la misma
manera que para las llamadas no recursivas convencionales.

La pila de ejecución del programa también contiene la memoria para las


variables locales en cada invocación de un método, durante la ejecución de un
programa. Cuando el método regresa a su invocador, la memoria para las
variables locales de ese método se saca de la pila y esas variables dejan de ser
conocidas por el programa. Si la variable local es una referencia, la cuenta de
referencias para el objeto al que se refiere se decremento en 1. Si la cuenta de
referencias se vuelve cero, el objeto puede ser candidato para la recolección de
basura.
Los compiladores utilizan pilas para evaluar expresiones aritméticas y generar
código en lenguaje máquina para procesar las expresiones. Además, el paquete
java.util contiene la clase Stack para implementar y manipular pilas que pueden
crecer y reducirse en tamaño durante la ejecución del programa.

 Otra Definición:

La Pila o Stack es una estructura de datos muy simple. Imagina que tienes una
pistola de juguete que dispara pelotas, y, para cargarla, tienes que introducir las
pelotas una a una por la parte frontal del cañón de la pistola, una tras otra. La
primera pelota que dispararás será la última que introdujiste, y la última que
dispararás será la primera que introdujiste. Eso es una pila.

PILAS – Universidad Nacional De Cajamarca 3


ESTRUCTURAS DINÁMICAS DE DATOS 4

Conceptualmente, las pilas fueron pensadas para cumplir con esta regla; como
estructura TDA (Tipos de Datos Abstractos); posee un único punto de acceso a
datos.
Al tener un único punto de acceso, tanto para insertar como para extraer un
elemento, siempre accederemos al último elemento insertado (el único visible),
si es que la estructura no está vacía.

En informática las pilas se usan muchísimo. Quizá la más famosa de todas sea
la conocida como pila de llamadas o call stack. Gracias a la existencia de esta
pila los programas pueden guardar los puntos de retorno al llamar a
subrutinas. También, en varios lenguajes, se usan pilas para guardar los datos
que pasamos como parámetros. Esto se hace en forma automática y
transparente para nosotros, y ayuda a usar la memoria

PILAS – Universidad Nacional De Cajamarca 4


ESTRUCTURAS DINÁMICAS DE DATOS 5

 PROPIEDADES de una Pila.

A. Estados:
 Vacía
 Llena

B. Acciones:

 Crear/Inicializar
 Destruir/Vaciar
 Agregar (Elemento)
 Extraer (Elemento)
 Ver Tope

A. ESTADOS DE UNA PILA

Ambos estados son booleanos (valen verdadero o falso)

 Pila vacía

– Se da siempre que la estructura no contiene elementos.


– Código:

 Pila llena

– Se da cuando no hay más lugar para almacenar elementos.

PILAS – Universidad Nacional De Cajamarca 5


ESTRUCTURAS DINÁMICAS DE DATOS 6

B. ACCIONES SOBRE UNA PILA

01. PUSH: Podemos agregar elementos, apilarlos, siempre que la pila no esté
llena. Se conoce también como Push o, en nuestro idioma, Apilar.
PUSH: cuando se ejecuta la instrucción Push en una Pila, se ejecuta un
algoritmo que inserta un elemento dentro de la pila de datos.

Suponga que queremos insertar el número 5 en una pila de números:

En la imagen hay una pila de números de tamaño 5


(o sea que se pueden insertar hasta 5 números). En
la pila solo existen 4 números insertados (1, 2, 3 y 4)
que ocupan desde la posición 0 hasta la posición 3
de la pila.
Cuando ejecutamos la instrucción Push (5);
indicamos que se va a inserta el número 5 en
nuestra pila, de este modo el número 5 que será
insertado quedara ocupando la posición 4 de
nuestra pila.

PILAS – Universidad Nacional De Cajamarca 6


ESTRUCTURAS DINÁMICAS DE DATOS 7

02. POP: Extraer elemento: podemos extraer el último elemento insertado,


desapilarlo, siempre y cuando la pila no esté vacía. Se conoce también
como Pop o, en nuestro idioma, desapilar.
POP: cuando se ejecuta la instrucción Pop en una pila se está indicando
que queremos borrar el elemento que se encuentre en la cima de nuestra
pila:

Suponga que queremos eliminar el número 5 en una pila de números:

Para este ejemplo se tiene una pila con


5 elementos insertados (1, 2, 3, 4 y 5),
estos van desde la posición 0 hasta
la posición 4; Cuando indicamos
una instrucción Pop() se elimina el
último elemento insertado (el elemento
de la cima de la pila), de este modo el
último elemento insertado en la pila (el
número 5, en la posición 4) se elimina
de la pila.

PILAS – Universidad Nacional De Cajamarca 7


ESTRUCTURAS DINÁMICAS DE DATOS 8

03. Top O Peek: El peek () método se utiliza para mirar el objeto en la parte
superior de la pila sin sacarlo de la pila.

El siguiente ejemplo muestra el uso de java.util.Stack.peek ()

PILAS – Universidad Nacional De Cajamarca 8


ESTRUCTURAS DINÁMICAS DE DATOS 9

03. VER TOPE DE LA PILA: El tope de la pila es el elemento que se


encuentra en la cima de la pila. Aquí se representan 4 pilas con sus
respectivos topes en diferente posición cada uno:

Por ejemplo, para la:

 La Pila A el tope es -1 debido a que es una pila vacía y no


contiene ningún elemento insertado.
 En la Pila B el tope está en el subíndice 2 y contiene el elemento [3
verde].
 En la Pila C el tope está situado en el subíndice 4 que contiene al
elemento [5 rojo] y es el tamaño máximo de la pila.
 En la Pila D el tope está en la posición 0 y contiene [1 Lila].

PILAS – Universidad Nacional De Cajamarca 9


ESTRUCTURAS DINÁMICAS DE DATOS 10

Aplicación
EJERCICIO 01.-

PILAS – Universidad Nacional De Cajamarca 10


ESTRUCTURAS DINÁMICAS DE DATOS 11

CONCLUSIONES
 Para concluir tenemos que las pilas y todos sus métodos y las
diferentes expresiones son una de las herramientas utilizadas para
programar y procesar de una manera automatizada todos los
sistemas que usamos día tras día en relación a técnicas o métodos
para agilizar operaciones.

 El uso de la clase Stack que aunque muy sencilla, es muy útil ya


que su implementación es muy fácil de aprender con tan solo los 5
métodos (push, pop, peek, empty, search).

 Las Pilas son fundamentales para dar soluciones a procesos que


ameritan de largos pasos.

 En las pilas lo que queremos es procesar los datos en orden


inverso, esto es, primero procesamos los últimos datos que
añadimos, hasta llegar a los iniciales.

 Los datos en la pila se van situando consecutivamente, y el orden


de estos dependerá del convenio de llamadas que estemos
utilizando. Independientemente de este orden, lo que es indudable
es que corremos el riesgo de sobrescribir un dato si no respetamos
bien las fronteras.

 La seguridad a la hora de desarrollar software usando estructuras


de datos de tipo pila es un factor a tener en cuenta debido a ciertas
vulnerabilidades que un uso incorrecto de éstas puede originar en
la seguridad de nuestro software o en la seguridad del propio
sistema que lo ejecuta. Por ejemplo, algunos lenguajes de
programación usan una misma pila para almacenar los datos para
un procedimiento y el enlace que permite retornar a su invocador.
Esto significa que el programa introduce y extrae los datos de la
misma pila en la que se encuentra la información

PILAS – Universidad Nacional De Cajamarca 11


ESTRUCTURAS DINÁMICAS DE DATOS 12

Bibliografía

 Fundamentos de programación en Java (Jorge Martínez Ladrón de Guevara)


 https://es.wikipedia.org/wiki/Stack
 https://juank.io/sistemas-operativos-manejador-procesos-proceso/
 https://es.wikipedia.org/wiki/Pila_(inform%C3%A1tica)

 http://metodos1utec.blogspot.com/2012/10/operaciones-con-pilas-y-
aplicaciones.html

 Programación Orientada a Objetos (Gustavo Guillermo Pérez)

 La Estructura De Datos Pila En Java (Manuel Sierra)

 http://www.universia.com/main/default.html
 http://www.alegsa.com.ar/Dic/pila.php
 http://buenasintencions.blogspot.com/2013/04/pilas-stack.html
 http://www.tutorialspoint.com/java/util/stack_peek.htm

PILAS – Universidad Nacional De Cajamarca 12