Fórum Stack, Pilha em Java #585708
11/09/2017
0
import java.util.Scanner;
public class MainPilha {
public static void main(String[] args) {
MethodPilha pilha = new MethodPilha();
MethodPilha pilha2 = new MethodPilha();
Scanner sc = new Scanner(System.in);
System.out.println("Primeira pilha: \\n");
for (int i = 1; i < 6; i++) {
Object valorP = sc.next();
pilha.push(valorP);
}
System.out.println("segunda pilha: \\n");
for (int i = 1; i < 6; i++) {
Object valorP2 = sc.next();
pilha2.push(valorP2);
}
pilha.equal(pilha,pilha2);
pilha.print(pilha);
System.out.println("\\n");
pilha2.print(pilha2);
System.out.println("\\n");
}
}public class MethodPilha {
public Object[] pilha;
public int posPilha;
public MethodPilha() {
this.posPilha = -1;
this.pilha = new Object [5];
}
public boolean isEmpty() {
if(this.posPilha == -1) {
return true;
}
return false;
}
public boolean isFull() {
if(this.posPilha == this.pilha.length-1) {
return true;
}
return false;
}
public int size() {
if (this.isEmpty())
return 0;
return this.posPilha + 1;
}
public void push(Object item) {
if(!this.isFull()) {
this.pilha[++posPilha] = item;
}else {
System.out.println("\\n Pilha está cheia");
}
}
public Object pop() {
if(isEmpty()) {
return null;
}
return this.pilha[this.posPilha --];
}
public void print(MethodPilha pilha) {
for (int i = 0; i < pilha.size(); i++) {
System.out.println(" "+this.pilha[i]);
}
}
//Este método seria o de comparação.
public boolean equal(MethodPilha pilha , MethodPilha pilha2) {
if(pilha.equals(pilha2))
return true;
return false;
}
}Segue acima o código que fiz utilizando uma classe main e uma para os métodos, sei que em java posso utilizar tudo isso pronto, mas para aula de estrutura de dados da faculdade a professora exige que façamos na unha para aprender a lógica de funcionamento. Mas minha real duvida é em relação a comparar duas pilhas para ver se são iguais e retornar true ou false, no código tenho o método que fiz mas ele está pegando o endereço de memória e já tentei muita coisa mas não está indo, se alguém poder me ajudar agradeço. XD
Samuel Lima
Curtir tópico
+ 0
Responder
Post mais votado
12/09/2017
Olá Samuel, tudo bom?
É uma tarefa que envolve alguns passos. Creio que consegui reunir os principais abaixo, vamos lá:
- Checar se um ou outro objeto é null e retornar false (se ambos forem nulos você pode optar por retornar false também)
- Checar se a quantidade de elementos em ambas as pilhas são iguais, pois se não forem você pode antecipar false também
- Checar se cada elemento na pilha é igual ao elemento de mesma posição na outra pilha (você pode ignorar posições diferentes para simplificar)
Com isso eu acho que já dá pra garantir uma boa nota ;)
Um abraço.
É uma tarefa que envolve alguns passos. Creio que consegui reunir os principais abaixo, vamos lá:
- Checar se um ou outro objeto é null e retornar false (se ambos forem nulos você pode optar por retornar false também)
- Checar se a quantidade de elementos em ambas as pilhas são iguais, pois se não forem você pode antecipar false também
- Checar se cada elemento na pilha é igual ao elemento de mesma posição na outra pilha (você pode ignorar posições diferentes para simplificar)
Com isso eu acho que já dá pra garantir uma boa nota ;)
Um abraço.
Estevão Dias
Responder
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)