Datos personales

viernes, 25 de noviembre de 2011

PILAS


CONCEPTO

Una pila (stack en inglés) es una lista ordinal 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. Esta estructura se aplica en multitud de ocasiones en el área de informática debido a su simplicidad y ordenación implícita de la propia estructura.
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 apilado (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.

CLASIFICACION
Estatica


¿Cómo representar estáticamente una pila?


Sin duda tendremos que utilizar arreglos o registros que como ya sabemos son la base para estructuras de datos más complejas. Considera la siguiente figura:


Vista gráfica



Estructura de datos



Suponiendo que Dato pertenece a un mismo tipo de datos y CuentaDato corresponde a un entero que se incrementa a medida que un nuevo elemento se incorpora a la pila. Intenta construir la definición de tipo para la estructura Pila.


TYPE
______________________________

______________________________
_____________________________


END;


Dinamica


¿Cómo representar dinámicamente una pila?


Sin duda tendremos que utilizar nodos con punteros. Considera la siguiente figura:


Estructura de datos


Suponiendo que los punteros que aparecen en la figura son capaces de apuntar a un nodo y que Dato pertenece a cualquiera de los tipos básicos o estructurados, la definición de tipo sería:


TYPE
Puntero=^NodoPila;
NodoPila=Record
Info:AlgunTipo;
sgte:Puntero;
End;


Var tope:Puntero;


APLICACIONES
Las pilas son utilizadas ampliamente para solucionar una amplia variedad de problemas. Se utiliza en compiladores, sistemas operativos y en programas de aplicación. Su implementación se puede hacer mediante Arrays Y Mediante listas enlazadas.
Un ejemplo de sus aplicaciones podrían ser los siguientes:

  • Los Navegadores en Internet almacenan en una pila las direcciones de los sitios más recientemente visitados.
  • Los editores de texto proporcionan normalmente un botón deshacer que cancela las operaciones de edición recientes y restablece el estado anterior del documento.
PROGRAMAS
1

package pilas;

import java.util.Scanner;

/**

*

* @author ALUMNO

*/

public class PilaEstatica {

public static void main(String[] args) {

int dato;

int pila[]=new int[5];

Scanner captura=new Scanner(System.in);

for(int tope=0;tope<5;tope++)

{

System.out.println("proprcione datos para pila");

dato=captura.nextInt();

pila[tope]=dato;


}

for (int tope=5;tope>=0;tope--)

System.out.println("la pila tiene los siguientes datos:"+pila[tope]);

}

}

2

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author alumno
*/
import java.util.Scanner;
public class Pilas {
public static void main(String[] args) {
int tope=0;
int dato;
int op;
int pila[]=new int[5];
Scanner captura=new Scanner(System.in);
do{
System.out.println("\t Menu \t");
System.out.println("Operaciones Con Pilas");
System.out.println("1.- Insertar");
System.out.println("2.- Eliminar");
System.out.println("3.- Mostrar");
System.out.println("4.- Salir");
System.out.println("\n");
System.out.println("Elija La Operacion Que Desee");
op=captura.nextInt();
switch(op){
case 1:
System.out.println("Inserte Numero");
dato=captura.nextInt();
insertar(dato);
break;
case 2:
break;
case 3:
break;
case 4:
break;
}
}while (op!=4);

public int insertar (int dato){
if(tope>4){
System.out.println("La Pila Esta Llena");
}
else {
tope++;
pila[tope]=dato;
}
return pila [tope];
}

}


No hay comentarios:

Publicar un comentario