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

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar