pile d'impression sans éclater éléments java
pour une tâche que j'ai à écrire une méthode qui affiche la pile, cette partie est facile
public void print(stack s)
{
while(!isEmpty())
{
System.out.println(s.peek());
s.pop();
}
}
Le problème est que après j'ai imprimé la pile, ma tâche est d'imprimer le fond de l'élément sur la pile, ce qui n'est pas des plus cause j'ai utilisé.pop() dans ma méthode d'impression. C'est mon code pour l'impression de l'élément bas.
public void bottom(stack s)
{
if(isEmpty())
{
System.out.println("Stack is empty");
}
else
{
System.out.println(stackArray[0]);
}
}
Ma question est: Comment dois-je modifie la méthode d'impression donc je n'ai pas de pop les éléments de la pile? Ou est-il une autre façon de faire en sorte que la pile tient toujours ma éléments après l'utilisation de méthode d'impression?
comme l'a fait appel c'est la pile que nous utilisons dans nos classes(la plupart sont en néerlandais):
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];
}
}
}
depuis mon rep n'est pas suffisant pour répondre à ma propre question d'une modification rapide
Je crois que j'ai trouvé une autre façon d'imprimer la pile à l'aide de cette
public void print(stack s)
{
for(int i =top-1; i>=0;i--)
System.out.println(stackArray[i]);
}
il n'est probablement pas la meilleure façon de le faire, mais ça fonctionne 😛
À l'aide d'Itérateur : public void printStack Pile(stack){ Iterator<> itr = pile.iterator(); while(itr.hasNext()){ sysout(itr.suivant); } }
OriginalL'auteur user2270715 | 2013-04-18
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez le haut-
java.util.Stack
type, alors cela vient deVector
, de sorte que vous pouvez utilisergetElement(int)
à lire des éléments de la pile de la profondeur.Si ce n'est votre propre code, vous aurez pour ajouter une méthode à faire de même.
Alternativement, vous pouvez éclater les éléments dans une autre pile ou un
List
type et puis reconstruire la pile après l'impression, mais ce serait très inefficace, et votre professeur sera le plus probablement froncement de sourcils sur une telle solution.OriginalL'auteur Aaron Digulla
Il existe une solution simple si vous voulez juste pour voir le contenu sans aucune fantaisie.
OriginalL'auteur Mangesh
Vérifier si la Pile est Vide
l'obtention de valeurs de pile
OriginalL'auteur jeff ayan
Utilisation Itérateur à boucle à travers la Pile, comme il fonctionne sur tout objet de Collection.
OriginalL'auteur Aakash Jha