elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Servidor TeamSpeak 3: crea tu propio canal gratis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  Creación de una pila básica en Java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Creación de una pila básica en Java  (Leído 6,059 veces)
madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.912



Ver Perfil WWW
Creación de una pila básica en Java
« en: 15 Octubre 2011, 12:18 »

Al aprender a trabajar con arrays, siempre suelen mencionarse las pilas. Una pila no es más que una colección de valores de tipo LIFO (Last In First Out), o sea el último valor insertado en la

pila es el primero en salir o ejecutarse. La estructura básica de una pila es la siguiente:



Mediante un array conseguiremos construir nuestra pila de datos en Java. Para eso creamos la siguiente clase:

Código
  1.  
  2. public class Stack {
  3.  
  4.    private int stck[];
  5.    private int tos;
  6.  
  7.    //Constructor
  8.    Stack(int size){
  9.        //Crear la pila
  10.        stck = new int[size];
  11.        tos = -1;
  12.    }
  13.  
  14.    //Introduce valor en la pila
  15.    void push(int value) {
  16.        if (tos == stck.length - 1)
  17.            System.out.println("Stack Overflow!");
  18.            //Pila esta llena
  19.        else
  20.            stck[++tos] = value;
  21.            //Almacena valor en pila
  22.    }
  23.  
  24.    //Retira valor de la pila
  25.    int pop() {
  26.        if (tos < 0) {
  27.            //La pila esta vacia
  28.            System.out.println("Stack Underflow!");
  29.            return 0;
  30.        } else
  31.            return stck[tos--];
  32.  
  33.    }
  34. }
  35.  

El primer método de la clase es el constructor, al constructor tenemos que pasarle un parámetro que indique el tamaño de la pila. Dentro del constructor se crea una matriz con el tamaño especificado a través del constructor y se le asigna el valor -1 a la variable tos (eso indica que la pila está vacía).


El siguiente método push() introduce un valor al principio de la pila, primero se comprueba si la pila está llena, en caso contrario agrega el valor introducido en la pila. El último método pop() elimina de la pila el último valor insertado y lo devuelve (también se comprueba que la pila no esté vacía).

Ahora veamos cómo utilizar ésta clase:

Código
  1. public class Test {
  2.  
  3.    public static void main(String args[]) {
  4.  
  5.        //System.out.println("This is a test!");
  6.  
  7.        Stack pila = new Stack(10);
  8.        //Llenar la pila
  9.        for (int i = 0; i < 10; i++) pila.push(i);
  10.  
  11.        //Retirar 5 primeros elementos de la pila
  12.        System.out.println("Valores contenidos en la pila: ");
  13.        for (int i = 0; i < 5; i++) System.out.println("\t " + pila.pop());
  14.  
  15.    }
  16.  
  17. }
  18.  

Primero se crea instancia la clase Stack y mediante el constructor se inicializa una pila que puede contener hasta 10 valores. Luego mediante la sentencia for() se introducen elementos en la pila insertándolos usando el método push().

Acto seguid, eliminamos y mostramos los 5 primeros valores de la pila.



En línea



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
klaine

Desconectado Desconectado

Mensajes: 112



Ver Perfil WWW
Re: Creación de una pila básica en Java
« Respuesta #1 en: 16 Octubre 2011, 06:26 »

Me gustó este ejemplo, demuestra bastante bien como funciona por dentro la clase java.util.Stack


En línea

[Case]


Desconectado Desconectado

Mensajes: 475



Ver Perfil WWW
Re: Creación de una pila básica en Java
« Respuesta #2 en: 17 Octubre 2011, 06:56 »

Me gustó este ejemplo, demuestra bastante bien como funciona por dentro la clase java.util.Stack

Mas bien demuestra el concepto basico de como implementar nuestra propia pila, no creo que la clase java.util.Stack este del todo implementada así.
En línea

klaine

Desconectado Desconectado

Mensajes: 112



Ver Perfil WWW
Re: Creación de una pila básica en Java
« Respuesta #3 en: 17 Octubre 2011, 07:18 »

Mas bien demuestra el concepto basico de como implementar nuestra propia pila, no creo que la clase java.util.Stack este del todo implementada así.


Just trolling, no me tomes en cuenta ;)
En línea

s00rk

Desconectado Desconectado

Mensajes: 195



Ver Perfil
Re: Creación de una pila básica en Java
« Respuesta #4 en: 17 Octubre 2011, 07:50 »

Nosotros en mi clase hicimos lo mismo bueno pero le agregamos otras funciones jeje, para ver el dato de la pila, y pues son de tipo boolean todos los metodos.

Código
  1. public class Pila
  2. {
  3. private int Tope = -1;
  4. private int Max;
  5. private int Pila[];
  6. public int DatoPila;
  7.  
  8. public Pila(int CantMax)
  9. {
  10. Pila = new int[CantMax];
  11. Max = CantMax;
  12. }
  13.  
  14. private boolean PilaVacia()
  15. {
  16. boolean resp = false;
  17. if(Tope == -1)
  18. resp = true;
  19. return resp;
  20. }
  21.  
  22. private boolean PilaLlena()
  23. {
  24. boolean resp = false;
  25. if((Tope-1) == Max)
  26. resp = true;
  27. return resp;
  28. }
  29.  
  30. public boolean InsertarPila(int Dato)
  31. {
  32. boolean resp = false;
  33. if(!PilaLlena())
  34. {
  35. Tope++;
  36. Pila[Tope] = Dato;
  37. resp = true;
  38. }
  39. return resp;
  40. }
  41.  
  42. public boolean RemoverPila()
  43. {
  44. boolean resp = false;
  45. if(!PilaVacia())
  46. {
  47. DatoPila = Pila[Tope];
  48. Tope--;
  49. resp = true;
  50. }
  51. return resp;
  52. }
  53.  
  54. public boolean VerPila()
  55. {
  56. boolean resp = false;
  57. if(!PilaVacia())
  58. {
  59. DatoPila = Pila[Tope];
  60. resp = true;
  61. }
  62. return resp;
  63. }
  64.  
  65. }
  66.  
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda basica de programacion en java
Java
MlcR0 4 1,152 Último mensaje 19 Diciembre 2006, 00:34
por MlcR0
[Java] Programa que maneje pila usando la clase Vector, LinkedList y ArrayList
Programación General
Nehemoth 3 6,029 Último mensaje 10 Octubre 2009, 05:31
por do-while
Duda basica java
Java
gxg 3 1,323 Último mensaje 16 Marzo 2011, 02:09
por sapito169
duda basica seguramente en java
Java
arts 7 657 Último mensaje 24 Octubre 2013, 16:30
por arts
problema en la creacion de shellcode basica
Análisis y Diseño de Malware
daryo 13 1,321 Último mensaje 19 Agosto 2014, 17:23
por MCKSys Argentina
Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines