Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pila
Pila
Ir a la navegaci�nIr a la b�squeda
Para el manejo de los datos 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.
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 equivaldr�a a retirarlo.
�ndice
1 Historia
2 Pila como tipo abstracto de datos
2.1 Operaciones
3 Pilas Hardware
4 Arquitectura b�sica de una pila
5 Soporte de Hardware
6 Soporte de Software
7 Expresi�n de evaluaci�n y an�lisis sint�ctico
8 Implementaci�n en aplicaciones inform�ticas
9 Tiempo de ejecuci�n de la gesti�n de memoria
10 Solucionar problemas de b�squeda
11 Seguridad
12 Pilas en Java
12.1 Descargar C�digo.
12.2 Clase Nodo
12.3 Clase Pila
12.4 Clase Manejador
13 V�ase tambi�n
14 Enlaces externos
Historia
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, qui�n recibi� en 1988 el premio
"IEEE Computer Society Pioneer Award" por su trabajo en el desarrollo de dicha
estructura de datos.
Operaciones
Habitualmente, junto a las dos operaciones b�sicas de apilar y desapilar (push,
pop), las pilas puede implementar otra serie de funciones:
Otro tipo de estructura de datos es la cola (FIFO, del ingl�s First In First Out),
�primero en entrar, primero en salir�.
Pilas Hardware
Un uso muy com�n de las pilas a nivel de arquitectura hardware es la asignaci�n de
memoria.
Una pila ocupar�a un bloque de celdas de memoria, con una direcci�n de origen, un
espacio reservado para la acumulaci�n de datos y un puntero que apunta al �ltimo
dato incorporado. La estructura que adopte una pila puede ser muy variada:
almacenando datos en direcciones crecientes o decrecientes, con capacidad de
almacenamiento flexible, con punteros que apunten al �ltimo elemento o a la
posici�n que deber� ocupar el pr�ximo elemento que se incorpore� En cualquier caso,
quedar� definida por su algoritmo: �ltimo en entrar, primero en salir.
Soporte de Hardware
Muchas CPUs tienen registros que se pueden utilizar como punteros de pila. Algunas,
como Intel x86, tienen instrucciones especiales que impl�citan el uso de un
registro dedicado a la tarea de ser un puntero de pila. Otras, como DEC PDP-11 y de
la familia 68000 de Motorola tienen que hacer frente a los modos de hacer posible
la utilizaci�n de toda una serie de registros como un puntero de pila. La serie
Intel 80x87 de coprocesadores num�ricos tiene un conjunto de registros al que se
puede acceder ya sea como una pila o como una serie de registros numerados. Algunos
microcontroladores, por ejemplo algunos PICs, tienen un fondo fijo de pila que no
es directamente accesible. Tambi�n hay una serie de microprocesadores que aplican
una pila directamente en el hardware:
Soporte de Software
En programas de aplicaci�n escrito en un lenguaje de alto nivel, una pila puede ser
implementada de manera eficiente, ya sea usando vectores o listas enlazadas. En
LISP no hay necesidad de aplicar la pila, puesto que las funciones apilar y
desapilar est�n disponibles para cualquier lista. Adobe PostScript tambi�n est�
dise�ada en torno a una pila que se encuentra directamente visible y manipuladas
por el programador. El uso de las pilas est� muy presente en el desarrollo de
software por ello la importancia de las pilas como tipo abstracto de datos.
En notaci�n postfija: 1 2 + 4 * 3 +
Forth utiliza dos pilas, una para pasar argumentos y una subrutina de direcciones
de retorno. El uso de una pila de retorno es muy com�n, pero el uso poco habitual
de un argumento para una pila legible para humanos es el lenguaje de programaci�n
Forth raz�n que se denomina una pila basada en el idioma.
Algunos lenguajes de programaci�n utilizar la pila para almacenar datos que son
locales a un procedimiento. El espacio para los datos locales se asigna a los temas
de la pila cuando el procedimiento se introduce, y son borradas cuando el
procedimiento termina. El lenguaje de programaci�n C es generalmente aplicado de
esta manera. Utilizando la misma pila de los datos y llamadas de procedimiento
tiene importantes consecuencias para la seguridad (ver m�s abajo), de los que un
programador debe ser consciente, a fin de evitar la introducci�n de graves errores
de seguridad en un programa.
Seguridad
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
cr�tica con las direcciones de retorno de las llamadas a procedimiento, supongamos
que al introducir datos en la pila lo hacemos en una posici�n err�nea de manera que
introducimos datos de mayor tama�o al soportado por la pila corrompiendo as� las
llamadas a procedimientos, provocar�amos un fallo en nuestro programa. �sta t�cnica
usada de forma maliciosa (es similar, pero en otro �mbito al buffer overflow)
permitir�a a un atacante modificar el funcionamiento normal de nuestro programa y
nuestro sistema, y es al menos una t�cnica �til si no lo evitamos en lenguajes muy
populares como el ejemplo C++.
Pilas en Java
Descargar C�digo.
Clase Nodo
package pilas;
/**
*
* @author Mauricio L�pez Ram�rez
*/
public class Nodo {
Nodo raiz;
}
Clase Manejador
package pilas;
/**
*
* @author Mauricio L�pez Ram�rez
*/
public class Manejador {
}
V�ase tambi�n
Listas
Pilas Acotadas
Colas
Enlaces externos
Estructuras de datos/Pilas y colas, en Wikibooks (ingl�s)
Distintas implementaciones del manejo de pilas en RosettaCode.org
Implementaci�n en java desde: trabajosdeotrosparalau.blogspot.com