跳到主要内容

简述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),因为我们需要使用另一个栈来存储逆序的元素。

请注意,这个方法会改变原栈的内容。如果你希望保持原栈不变,你需要在开始之前先复制一份原栈。