для задачи я должен написать метод, который печатает стек, что часть легкостек печати без выскакивают элементы Java
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]);
}
}
Мой вопрос: Как мне модифицировать метод печати, поэтому мне не нужно выталкивать элементы из стека? Или есть другой способ сделать это так, чтобы стек все еще сохранял мои элементы после использования метода печати?
, как resquested это стек мы используем в наших классах (большинство из них находится в нидерландском):
public class MyStack
{
protected Object[ ] stackArray;
protected int top;
private int grootte;
private static final int DEFAULT_GROOTTE = 10;
public MyStack()
{
grootte = DEFAULT_GROOTTE;
stackArray = new Object[grootte];
top = 0;
}
public boolean isEmpty()
{
if (top == 0)
return true;
else
return false;
}
public void push(Object e)
{
if (top == grootte)
allocateMore();
stackArray[top] = e;
top++;
}
public Object pop()
{
if(isEmpty())
{
System.out.println("Stack leeg : er kan geen element van de stack afgehaald worden.");
return null;
}
top--;
return stackArray[top];
}
public Object peek()
{
if(isEmpty())
{
System.out.println("Stack leeg : er kan geen topelement van de stack getoond worden.");
return null;
}
return stackArray[top-1];
}
public int size()
{
return top;
}
private void allocateMore()
{
Object[ ] original = stackArray;
grootte = grootte * 2;
stackArray = new Object[ grootte];
for(int i = 0; i < grootte/2; i++)
{
stackArray[i] = original[i];
}
}
}
, так как моя репутация не достаточно высока, чтобы ответить на мой собственный вопрос быстро редактировать
Я думаю, что я нашел другой способ печати стек с помощью этого
public void print(stack s)
{
for(int i =top-1; i>=0;i--)
System.out.println(stackArray[i]);
}
это, вероятно, не самый лучший способ сделать это, но это работает: P
Не могли бы вы добавить свой класс Stack? – Vitaly
Использование Iterator: public void printStack (стек стека) { Итератор <> itr = stack.iterator(); while (itr.hasNext()) { \t sysout (itr.next); } } –