Stack, Pilha em Java
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
Clique aqui para fazer login e interagir na Comunidade :)