Artificial Intelligence
Please fill the required field.

Resolución de problemas con pilas con arreglos en java


Las pilas (stacks) son estructuras de datos que siguen el principio LIFO (Last In, First Out), es decir, el último elemento que se agrega es el primero en ser retirado. En Java, puedes implementar una pila utilizando un arreglo. A continuación, se presenta una implementación simple de una pila usando un arreglo, así como ejemplos de cómo resolver problemas típicos con esta estructura de datos. ### Implementación de una Pila usando un Arreglo Aquí tienes una implementación básica de una pila con un arreglo en Java: ```java class Pila { private int maxSize; private int[] stackArray; private int top; // Constructor para inicializar la pila public Pila(int size) { maxSize = size; stackArray = new int[maxSize]; top = -1; // Indica que la pila está vacía } // Método para agregar un elemento a la pila public void push(int value) { if (top + 1 < maxSize) { stackArray[++top] = value; } else { System.out.println("Error: La pila está llena."); } } // Método para eliminar el elemento superior de la pila public int pop() { if (top >= 0) { return stackArray[top--]; } else { System.out.println("Error: La pila está vacía."); return -1; // Retorna -1 si la pila está vacía } } // Método para ver el elemento superior sin eliminarlo public int peek() { if (top >= 0) { return stackArray[top]; } else { System.out.println("Error: La pila está vacía."); return -1; // Retorna -1 si la pila está vacía } } // Método para verificar si la pila está vacía public boolean isEmpty() { return (top == -1); } // Método para verificar si la pila está llena public boolean isFull() { return (top + 1 == maxSize); } } ``` ### Ejemplo de Uso Ahora vamos a utilizar esta clase `Pila` para resolver un problema típico: **Evaluar una expresión aritmética en notación postfija**. #### Evaluar Expresión Postfija ```java import java.util.Scanner; public class EvaluarPostfijo { public static void main(String[] args) { Pila pila = new Pila(100); // Crear una pila con capacidad de 100 elementos Scanner scanner = new Scanner(System.in); System.out.println("Ingrese una expresión aritmética en notación postfija (separada por espacios):"); String expresion = scanner.nextLine(); String[] tokens = expresion.split(" "); for (String token : tokens) { if (token.matches("\\d+")) { // Si el token es un número, lo empujamos a la pila pila.push(Integer.parseInt(token)); } else { // Si el token es un operador, hacemos pop de los dos elementos int b = pila.pop(); int a = pila.pop(); int resultado = 0; switch (token) { case "+": resultado = a + b; break; case "-": resultado = a - b; break; case "*": resultado = a * b; break; case "/": resultado = a / b; break; default: System.out.println("Error: Operador no reconocido."); } // Empujamos el resultado de la operación de nuevo a la pila pila.push(resultado); } } // El resultado final debe estar en la parte superior de la pila System.out.println("El resultado de la expresión es: " + pila.pop()); } } ``` ### Instrucciones para Compilar y Ejecutar 1. Copia el código de la clase `Pila` y la clase `EvaluarPostfijo` en un archivo llamado `EvaluarPostfijo.java`. 2. Abre una terminal o consola y navega al directorio donde guardaste el archivo. 3. Compila el programa usando: ```sh javac EvaluarPostfijo.java ``` 4. Ejecuta el programa usando: ```sh java EvaluarPostfijo ``` 5. Ingresa una expresión aritmética en notación postfija separada por espacios (por ejemplo: `3 4 + 2 * 7 /`). ### Consideraciones - Esta implementación es básica y no maneja errores de manera robusta, como la división por cero o la evaluación de expresiones mal formadas. - Puedes extender la funcionalidad de la pila añadiendo más métodos o características según sea necesario. Esta sería una forma sencilla de resolver un problema común usando pilas en Java. Si tienes algún otro problema específico en mente o necesitas expansión en algún tema, ¡déjamelo saber!