Olá pessoal,
é a primeira vez que posto alguma coisa, vou tentar ser claro …
Voltei a estudar java recentemente e estou fazendo velhas listas de exercícios da faculdade… dentre elas uma é sobre pilhas
Criei uma classe Pilha bem simples e ela funcionou bem … mas estou tendo problemas ao tentar fazer esta pilha aumentar de tamanho
quando eu esvazio o resultado me mostra que ao empilhar alguns numeors ficaram de fora … vou deixar o código aí e se alguém puder dar uma luz !!
[code]
class Pilha
{
private Object vetor[];
private int topo;
public void inicializa(int max_elementos)
{
vetor = new Object[max_elementos+1];
}
public boolean vazia()
{
if(topo==0)
{
System.out.println("A pilha está VAZIA !");
return true;
}
else
{
System.out.println("A pilha NÃO está vazia !");
return false;
}
}
// PUSH & POP ===============================
public void push(int x)
{
if(topo<vetor.length-1)
vetor[++topo]=x;
else if ( topo==vetor.length-1)
grow();
}
public Object pop()
{
if(topo==0)
{
System.out.println("Pilha vazia");
return -0;
}
else
return vetor[topo--];
}
// mostra pilha = desempilha em um string============
public void mostra_pilha()
{
String aux="";
while(topo!=0)
aux+=" "+pop();
System.out.println(aux);
}
private void grow()
{
Object vet_velho[] = vetor;
vetor = new Object [ vet_velho.length * 2 ];
for(int i=0;i<vet_velho.length;i++)
vetor[i]= vet_velho[i];
}
public class Principal
{
public static void main(String[] args)
{
Pilha p1 = new Pilha();
p1.inicializa(10);
for(int i=0;i<100;i++)
p1.push(i+1);
p1.mostra_pilha();
}
}
Assim… tive dificuldade principalmente pq vc não usa as {} no for, if, else, while…
Claro que não precisa, mas pra mim é uma boa prática para facilitar a manutenção posterior…
flw
Obrigado Paulo,
Eu apliquei as alterações e funcionou direitinho.
demorou um pouquinho pra cair a ficha do que
eu estava errando mas funciona perfeitamente !
Muito Obrigado !
Grato também Vinícius !
mas esses exercícios em geral
os professores pedem pra desenvolver
e reinventar a roda … pra aprender mesmo e tal!
vou deixar a dica anotada aqui pq seu código
também funcionou …!