打印堆栈而不弹出java元素
对于一项任务,我必须编写一个打印堆栈的方法,这一部分很简单打印堆栈而不弹出java元素,java,printing,stack,Java,Printing,Stack,对于一项任务,我必须编写一个打印堆栈的方法,这一部分很简单 public void print(stack s) { while(!isEmpty()) { System.out.println(s.peek()); s.pop(); } } 问题是,在打印堆栈后,我的任务是打印堆栈上的底部元素,因为我在打印方法中使用了s.pop(),所以不再有了。这是我打印底部元素的代码 public void bottom(stack s) { if(isE
public void print(stack s)
{
while(!isEmpty())
{
System.out.println(s.peek());
s.pop();
}
}
问题是,在打印堆栈后,我的任务是打印堆栈上的底部元素,因为我在打印方法中使用了s.pop(),所以不再有了。这是我打印底部元素的代码
public void bottom(stack s)
{
if(isEmpty())
{
System.out.println("Stack is empty");
}
else
{
System.out.println(stackArray[0]);
}
}
我的问题是:我应该如何修改print方法,以便不必从堆栈中弹出元素?或者有没有其他方法可以使堆栈在使用print方法后仍然保存我的元素
如resquested所示,这是我们在类中使用的堆栈(大部分是荷兰语):
这可能不是最好的方法,但它很有效:p如果您使用内置的
java.util.Stack
类型,那么它派生自Vector
,因此您可以使用getElement(int)
读取任何堆栈深度的元素
如果这是您自己的代码,则必须添加一个方法来执行相同的操作
或者,您可以将元素弹出到另一个堆栈或
列表类型中,然后在打印后重建堆栈,但这将非常低效,您的老师很可能会反对这种解决方案。如果您只想查看内容而不想看到任何花哨的东西,有一个简单的解决方法
System.out.println(Arrays.toString(myStack.toArray()));
检查堆栈是否为空
for(int i=_stack.size()-1; i>=0;i--)
System.out.println(_stack.get(i));
获取堆栈值当它们在任何集合对象上工作时,使用迭代器在堆栈中循环。可以添加堆栈类吗?使用迭代器:public void printStack(stack stack){Iterator itr=stack.Iterator();while(itr.hasNext()){sysout(itr.next);}
System.out.println(Arrays.toString(myStack.toArray()));
if (!_stack.empty())
for(int i=_stack.size()-1; i>=0;i--)
System.out.println(_stack.get(i));