Pessoal, estou apanhando muito para resolver esse exercício que preciso entregar, gostaria
de saber se alguém sabe como solucionar isso.
Pilha
Pilha é uma estrutura de dados linear que pode ser acessada somente por uma de suas extremidades para armazenar e recuperar dados. Podemos fazer uma associação que uma pilha de pratos: o primeiro prato a ser utilizado é o prato mais alta da pilha, o último que foi empilhado. Uma pilha é chamada de LIFO (last in / first out)
Uma pilha é definida em termos das operações que modificam e das que verificam seu status. As operações são:
Clear() – limpa a pilha
isEmpty() – Verifica se a pilha está fazia
isFull() – Verifica se a pilha está cheia
push(element) – coloca o item element no alta da pilha (empilha)
pop() – desempilha o elemento do topo da pilha – retirando-o da pilha.
topElement() – retorna o elemento mais alta da pilha sem removê-lo.
Implemente uma pilha com as operações definidas acima. Sendo que no construtor da pilha deverá ser informado a quantidade máxima de elementos que poderão ser armazenados na pilha. Assim, a sua pilha deverá:
- Verificar se ainda existe espaço para armazenar um novo elemento no método de push, caso contrário deverá ser exibido uma mensagem de erro.
- Verificar se a pilha está vazia antes de desempilhar um elemento, se isto ocorrer, uma mensagem de erro de deverá ser exibida.
Para estar a sua implementação de Pilha, deverá ser implementado um programa que realize a soma de nós números inteiros utilizando a sua Pilha construída. Veja o exemplo no diagrama:
Ainda, a sua implementação deverá ser capaz de salvar em disco as pilhas e ter a opção da leitura dos dados armazenados em disco.
Agora segue o que eu tentei fazer:
public class Pilha {
int[]elements;
int topo;
public Pilha() {
elements = new int[5];
topo = -1;
}
public void push (int e) { //poe algo na pilha
if (isFull()) {
System.out.println("Pilha Cheia"); //tratamento de exceçao //recurso java
}
topo++;
elements[topo] = e;
}
public int pop () { //retira algo da pilha
if (isEmpty()) {
System.out.println("Pilha vazia");
}
int e;
e = elements[topo];
topo--;
return e;
}
public boolean isEmpty() {
return (topo == -1);
}
public boolean isFull() {
return (topo == elements.length);
}
public int top() { //verifica o que está no topo da pilha
if (isEmpty()) {
System.out.println("Pilha Vazia");
}
return this.elements[topo];
}
public void clear() { //limpa a pilha
for(int i = 0; i < elements.length; i++)
elements[i] = 0;
topo = 0;
}
}
public class Main {
public static void main(String[] args) {
Pilha p = new Pilha();
p.push(1);
p.push(2);
p.push(3);
p.push(4);
p.push(5);
while (p.isEmpty()==false) {
System.out.println(p.pop());
}
while (p.isFull()==true) {
System.out.println("Pilha Cheia");
}
p.clear(); //teste de limpeza
System.out.println(p.pop());
}
}