Estou com um problema com essa questão:
Elabore um método para manter duas pilhas dentro de um único vetor linear de modo que nenhuma das pilhas incorra em estouro até que toda a memória seja usada, e uma pilha inteira nunca seja deslocada para outro local dentro do vetor. Escreva os métodos me Java: push1, push2, pop1 e pop2, para manipular as duas pilhas. (Dica: as duas pilhas crescem na direção da outra.)
Implementei minha pilha da seguinte forma:
public class Pilha<T> {
public T[] elementos;
public int topo;
public Pilha() {
elementos = (T[]) new Object[10];
topo = -1;
}
public boolean inserir(T e) {
if (!estaCheia()) {
topo++;
elementos[topo] = e;
return true;
}
return false;
}
public boolean estaVazia() {
return topo == -1;
}
public boolean estaCheia() {
return this.topo == this.elementos.length - 1;
}
public T remover() {
if (!estaVazia()) {
return elementos[topo--];
}
return null;
}
public int tamanho() {
return this.elementos.length;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder("[");
for (int i = 0; i <= this.topo; i++) {
sb.append(this.elementos[i]);
if (i < this.topo) {
sb.append(", ");
}
}
sb.append("]");
return sb.toString();
}
}
Não faço ideia de como criar esse método!!
Pensei em utilizar duas pilhas e remover de uma para colocar na outra, mas n creio que seja isso. Alguém poderia me dar uma luz?