olá pessoas…
estou fazendo estrutura de dados na unisul,
mais não estou conseguindo entender na pratica o que seria um Pilha.
eu vi que possui metodos top, push, node… mais não peguei mesmo,
não entrou… falaraum que é a materia que mais roda na unisul em computação,
e estou com medo, você podereiam me ajudar e explicar o que esses metodos fazem?
Se possivel, com um exemplo… porque, o que é uma pilha? Oo
tipo, seria o primeiro numero a entrar é o ultimo a sair?
desculpa qualquer coisa, mas busquei aqui no forum e vi que tem assuntos sobre isso,
mais jah com uma abrangencia mais elevada…
para vc entender como uma pilha funciona imagine uma pilha de livro o ultimo livro a ser colocado na pilha vai ser o primeiro a sair ou seja primeiro a entrar ultimo a sair ( First In, Last Out ) e os métodos mais comuns são
pop() - remove o ultimo item adicionado na pilha
push() - adiciona um item no topo da pilha
top() - retorna o item do topo da pilha
empty() - verifica se a pilha está vazia
em java existe uma classe que se chama Stack do pacote java.util que simula uma pilha de uma olhada na documentação para maiores informações da Classe Stack http://java.sun.com/j2se/1.4.2/docs/api/
bom,
dei uma olhadinha na classe stack… e fiz ela…
porem esta ocorrendo um erro:
java.lang.StackOverflowError
Exception in thread “main”
Não sei o que pode ser…
meu código:
Classe Stack:
[code]
public class Stack
extends List {
/**
* Construtor da classe.
*/
public Stack() {
super();
}
/**
* Método push, adiciona um item no topo da pilha.
*/
public void push(Object o){
push(o);
}
/**
* Método pop, remove o ultimo item adicionado na pilha.
*/
public Object pop()
throws EmptyStackException {
return pop();
}
/**
* Método empty, verifica se a pilha está vazia.
* @return
*/
public boolean isEmpty() {
return isEmpty();
}
/**
* Método print - Mostra.
*/
public void print() {
print();
}
}[/code]
Classe Tester:
[code]
public class StackTest {
public static void main(String[] args) {
// Recebe o conteudo da outra classe (Stack).
Stack io_object = new Stack();
// Cria os objetos para armazenar na pilha.
Integer ln = new Integer(0);
Integer ln_1 = new Integer(1);
Integer ln_2 = new Integer(2);
Integer ln_3 = new Integer(3);
// Utiliza o método push e print.
io_object.push(ln);
io_object.print();
io_object.push(ln_1);
io_object.print();
io_object.push(ln_2);
io_object.print();
io_object.push(ln_3);
io_object.print();
// Variavel para o método pop.
Object removeObj = null;
try {
while(true) {
// Utiliza o método pop.
removeObj = io_object.pop();
// Mostra na tela o que foi removido.
System.out.println(removeObj.toString() + "removeu");
// Utiliza o método print.
io_object.print();
}
}
catch (Exception e) {
// Mostra o pau
e.printStackTrace();
System.err.println("\n"+e.toString());
}
}
Que “pop” você está chamando? Dessa maneira vai chamar a própria rotina, e isso vai continuar até que o Java “abra o bico”. Provavelmente você quis dizer:
pense em uma pilha como uma caixa de sapato que vc vai colocando uma sobre a outra…vamos dizer que vc tem 3 caixas… a primeira que vc colocou e ta no fim vai ser a ultima a sair… e a ultima que vc colocou vai ser a primeira a sair… ou seja a caixa de numero 3.
[quote=Bravox]para vc entender como uma pilha funciona imagine uma pilha de livro o ultimo livro a ser colocado na pilha vai ser o primeiro a sair ou seja primeiro a entrar ultimo a sair ( First In, Last Out ) e os métodos mais comuns são
pop() - remove o ultimo item adicionado na pilha
push() - adiciona um item no topo da pilha
top() - retorna o item do topo da pilha
empty() - verifica se a pilha está vazia
em java existe uma classe que se chama Stack do pacote java.util que simula uma pilha de uma olhada na documentação para maiores informações da Classe Stack http://java.sun.com/j2se/1.4.2/docs/api/
qualquer coisa estamos ai
[/quote]
estava olhando este tópico. está legal , mas na verdade (precisa uma correção ) é o LAST IN, FIRST OUT LIFO e não FILO na fila é FIRst in, First out. FIFO.
meu professor estava dizendo que a classe Stack (pilha) do java não corresponde a uma pilha. eu não entendi. alguém sabe algo sobre isso?
Achei muito estranho porque o java, não teria porque errar nisso, além do mais usando o nome pilha em ingles e tudo…