Pilha em Java

3 respostas
mi.rodrigues
Olá galera, estou fazendo uma pilha. Por enquanto só fiz os métodos push, stackempty e peek... Eles estão corretos? Alguém poderia me ajudar a verificar onde estão os erros? Onde posso melhorar? Grato pela compreensão, abraços!
public class Stack {

	private static String topo;

	public Stack(int capacity) {
		topo = null;
	}

	public static void main(String[] args) {

		Stack s = new Stack(5);
		String x;
		String[] names = {"alton", "bob", "cocotea", "dennis", "effy"};
		
		for(int i = 0; i < names.length; i++){
			s.push(s, names[i]);
			
		}
                 
		System.out.println(s.peek(s));

	}

	private static void push(Stack s, String x) {

		s.topo = s.topo + 1;
		s.topo = x;

	}
	
	private static boolean stackEmpty(Stack s){
		
		if(s.topo == null){
			return true;
		}else{
			return false;
		}
	}
	
	private static String peek(Stack s){
		
		if(stackEmpty(s)){
			return null;
		}else{
			return s.topo;
		}
		
	}

}

3 Respostas

Rodrigo_Sasaki

Cara, essa sua pilha não funciona não.

No instante em que você adiciona um item novo, perde a referência do antigo. veja seu método: private static void push(Stack s, String x){ s.topo = s.topo + 1; s.topo = x; }Primeiro você concatena 1 como valor antigo, e depois substitui o valor antigo pelo novo. Ficou meio esquisito isso aí :slight_smile:

A ideia é você implementar a pilha em cima de um array, ou de uma lista ligada, mas nunca pode jogar fora os itens anteriores da pilha, senão a estrutura não serve pra nada :slight_smile:

mi.rodrigues

Eita! Vish, tô mal, nem percebi isso :confused: vou fazer em cima de uma lista ligada então! Daqui a pouco eu corrigi o código pra tu verificar se tem erro, blz? Abraços!

Rodrigo_Sasaki

Sem problemas :slight_smile: só uma dica, implemente o método pop também… aí rode uns testes pra ter certeza de que tudo funciona :slight_smile:

Criado 17 de maio de 2013
Ultima resposta 17 de mai. de 2013
Respostas 3
Participantes 2