简述Java实现栈逆序 ?
参考答案:
在Java中,实现栈逆序(也就是将栈中的元素逆序排列)可以通过多种方法完成。下面是一个简单的例子,使用两个栈来实现这个功能:
import java.util.Stack;
public class StackReverse {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);
System.out.println("原始栈:");
while (!stack.isEmpty()) {
System.out.println(stack.pop());
}
Stack<Integer> tempStack = new Stack<>();
while (!stack.isEmpty()) {
tempStack.push(stack.pop());
}
System.out.println("逆序后的栈:");
while (!tempStack.isEmpty()) {
System.out.println(tempStack.pop());
}
}
}
在这个例子中,我们首先创建了一个栈并添加了一些元素。然后,我们遍历这个栈,将每个元素都弹出并压入另一个新的栈中。由于栈是后入先出的数据结构,所以新栈中的元素顺序就是原栈的逆序。最后,我们遍历新栈并打印出元素,这样就得到了逆序排列的元素。
这种方法的时间复杂度是O(n),其中n是栈中元素的数量。因为我们需要遍历栈两次:一次是为了将元素从原栈移到新栈,另一次是为了从新栈中弹出元素。空间复杂度也是O(n),因为我们需要使用另一个栈来存储逆序的元素。
请注意,这个方法会改变原栈的内容。如果你希望保持原栈不变,你需要在开始之前先复制一份原栈。