读取一个没有清空的ArrayStack,这种方法不起作用

时间:2018-05-01 21:57:13

标签: java stack

在java中我写了一个基于数组的Stack程序,我想编写一个方法   它会读取ArrayStack的所有元素,而不会因为pop而清空它  函数将清空ArrayStack。有什么想法吗?

public static <E> void aufgaben(ArrayStack<E> a) {
    ArrayStack<E> b = a;
    ArrayStack<E> c = b;
    ArrayStack<E> d = c;

    while (!c.isEmpty()) {
        System.out.println(c.pop());
    }

}

1 个答案:

答案 0 :(得分:0)

我们无法确定任何事情,因为您的问题并没有告诉我们ArrayStack类正在实施什么API。

但是,您的方法不起作用的可能原因是pop正在从堆栈中删除元素。什么都没有让他们回来。

这些陈述没有用处:

    ArrayStack<E> b = a;
    ArrayStack<E> c = b;
    ArrayStack<E> d = c;

你正在做的事情与从a弹出相同。

Java 中对象的赋值不会复制对象。它只是复制对象引用(指针,如果你喜欢)。因此,您最终会将abc全部引用(指向)同一个对象。

我猜这是家庭作业,所以这里有一两个提示

  1. 要么在API中查找允许您在不删除元素的情况下检查堆栈的方法。

  2. 如果没有,请考虑一下重建堆栈后的方法。肯定有办法。想一想。 (提示:第二次堆叠......)