No puedes Para cambiar el orden de la pila, debe hacer estallar todos los elementos que están actualmente en la pila (porque necesitará cambiar el elemento inferior de la pila). Si hace estallar cada uno de los elementos en la pila, necesitará una forma de almacenar sus valores. Esto requerirá memoria [matemática] \ Theta (n) [/ matemática], lo que significa que tendrá que usar una estructura de datos secundaria.
Editar:
Según los comentarios a continuación, la recursividad es aceptable, por lo que puede hacer algo como esto:
import java.util.Stack; public class ReverseStack { public static void main(String[] args) { Stack stack = new Stack(); stack.push(5); stack.push(4); stack.push(3); stack.push(2); stack.push(1); reverseStack(stack); for (int i = 0, n = stack.size(); i < n; i++) { System.out.println(stack.elementAt(i)); } } public static void reverseStack(Stack stack) { if (stack.isEmpty()) { return; } // Remove bottom element from stack T bottom = popBottom(stack); // Reverse everything else in stack reverseStack(stack); // Add original bottom element to top of stack stack.push(bottom); } private static T popBottom(Stack stack) { T top = stack.pop(); if (stack.isEmpty()) { // If we removed the last element, return it return top; } else { // We didn't remove the last element, so remove the last element from what remains T bottom = popBottom(stack); // Since the element we removed in this function call isn't the bottom element, add it back onto the top of the stack where it came from stack.push(top); return bottom; } } }
- ¿Qué lenguaje, libro o técnica es el mejor punto de partida cuando estás frustrado con tus habilidades de programación y quieres tener una sólida formación en algoritmos y estructuras de datos?
- ¿Qué es mejor para la programación competitiva, la introducción del MIT a los algoritmos o los tutoriales de TopCoder?
- ¿Es necesario tener datos estacionarios para aplicar algún tipo de algoritmo de aprendizaje automático?
- Cómo resolver el problema 144C en Codeforces
- ¿Qué sabes sobre el algoritmo de búsqueda de Fiverr?