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

Samuel Lima

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.

Estevão Dias

Estevão Dias
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar