Java 如何读取堆栈的所有元素而不弹出它们?

Java 如何读取堆栈的所有元素而不弹出它们?,java,algorithm,stack,Java,Algorithm,Stack,我想在不弹出堆栈的情况下读取堆栈的所有元素。我在网上查了一下,发现有一个“peek”操作,但它只返回堆栈的第一个元素。如何读取堆栈的其他元素?请推荐Java中的代码 提前感谢:只是重申一下原始答案,似乎您需要不同的数据结构。。。如果您详细说明了为什么需要在没有标准操作的情况下查看堆栈的所有元素,那么也许可以提出一个建议。您可能已经想到了,但是如果您弹出所有元素并将它们推到不同的堆栈上,然后对原始堆栈执行相同的操作,您可以看到这些元素,但我不确定您为什么要这样做。仅重申原始答案,似乎您需要不同的数

我想在不弹出堆栈的情况下读取堆栈的所有元素。我在网上查了一下,发现有一个“peek”操作,但它只返回堆栈的第一个元素。如何读取堆栈的其他元素?请推荐Java中的代码


提前感谢:

只是重申一下原始答案,似乎您需要不同的数据结构。。。如果您详细说明了为什么需要在没有标准操作的情况下查看堆栈的所有元素,那么也许可以提出一个建议。您可能已经想到了,但是如果您弹出所有元素并将它们推到不同的堆栈上,然后对原始堆栈执行相同的操作,您可以看到这些元素,但我不确定您为什么要这样做。

仅重申原始答案,似乎您需要不同的数据结构。。。如果您详细说明了为什么需要在没有标准操作的情况下查看堆栈的所有元素,那么也许可以提出一个建议。您可能已经想到了,但是如果您弹出所有元素并将它们推到不同的堆栈上,然后对原始堆栈执行相同的操作,您可以看到这些元素,但我不确定您为什么要这样做。

如果您说的是,这取决于实现。堆栈通常以数组或链表的形式实现,这两种方式都很容易遍历。按照维基百科的说法,只有堆栈接口的init、push、top、pop和isempty方法是不可能的

如templatetypedef所指出的,如果您正在谈论的是,它实现了一个size方法,并允许您对其进行迭代。

如果您正在谈论的是,它取决于实现。堆栈通常以数组或链表的形式实现,这两种方式都很容易遍历。按照维基百科的说法,只有堆栈接口的init、push、top、pop和isempty方法是不可能的


如果您正在谈论,正如templatetypedef指出的,它实现了一个size方法,并允许您对其进行迭代。

取决于实现。但你不会这么做的。堆栈是一个LIFO数据结构,您只需要看到顶部。注意堆栈是矢量的一个子类型,因此您可以使用所有的向量方法(包括随机访问)来读取堆栈的元素。如果需要检查堆栈上的所有元素,则可能不应该使用堆栈。通常需要检查堆栈中顶部的几个条目。例如,编译器语法分析可能需要这样做。但是您使用的堆栈需要支持该函数。有的有,有的没有。由于堆栈不是复杂的数据结构,如果你需要这个函数,并且它不能从一个预定义的类中轻易获得,那么实现你自己的函数是合理的。另一方面:在编写表达式计算器时,我需要查看堆栈顶部下的一个或两个元素,而不会弹出它们。但不是所有的元素。取决于实现。但你不会这么做的。堆栈是一个LIFO数据结构,您只需要看到顶部。注意堆栈是矢量的一个子类型,因此您可以使用所有的向量方法(包括随机访问)来读取堆栈的元素。如果需要检查堆栈上的所有元素,则可能不应该使用堆栈。通常需要检查堆栈中顶部的几个条目。例如,编译器语法分析可能需要这样做。但是您使用的堆栈需要支持该函数。有的有,有的没有。由于堆栈不是复杂的数据结构,如果你需要这个函数,并且它不能从一个预定义的类中轻易获得,那么实现你自己的函数是合理的。另一方面:在编写表达式计算器时,我需要查看堆栈顶部下的一个或两个元素,而不会弹出它们。但不是所有的元素。我很抱歉,但我刚刚意识到这是一个愚蠢的问题,因为我已经知道如何做到这一点。我使用LinkedList实现了自己的堆栈数据结构。我只是使用一个临时对象遍历了整个堆栈,然后就可以打印堆栈了。谢谢你的回答:我很抱歉,但我刚刚意识到这是一个愚蠢的问题,因为我已经知道如何做到这一点。我使用LinkedList实现了自己的堆栈数据结构。我只是使用一个临时对象遍历了整个堆栈,然后就可以打印堆栈了。谢谢你的回答:当然,问题是Stack或Deque没有记录它如何使用底层向量,即使我们
我认为这是最明显的实现,你需要做一些算术来计算从顶部开始的第n个元素。我使用一个链表实现,我意识到这只是一个迭代操作,可以帮助我读取堆栈中的所有元素。感谢您的回答:@HotLicks 100%正确,尽管问题没有说明某些特定的顺序是必需的,但仍然很有用。当然,问题是Stack或Deque没有记录它如何使用底层向量,即使我们假设它是最明显的实现,您需要做一些算术来计算从顶部开始的第n个元素。我使用了一个链表来实现,我意识到这只是一个迭代操作,可以帮助我读取堆栈中的所有元素。感谢您的回答:@HotLicks 100%正确,尽管问题没有说明需要某些特定的顺序,但还是很有用。