A pilha é uma das estruturas de dados mais importantes da linguagem Java. Sua implementação deve incluir pelo menos os seguintes métodos:
1. operação pop() pop, pop o elemento superior da pilha.
2. operação push (E e) push
3.peek() Veja o elemento superior da pilha
4.isEmpty() A pilha está vazia?
Além disso, ao implementar uma pilha, diversas questões devem ser consideradas:
1. O tamanho inicial da pilha e como adicionar novo espaço de pilha depois que a pilha estiver cheia
2. A sincronização é necessária ao atualizar a pilha
Um exemplo simples, usando um array para implementar uma pilha, o código é o seguinte:
Copie o código do código da seguinte forma:
classe pública Pilha<E> {
// Java não suporta arrays genéricos. Se precisar usá-los, use o contêiner fornecido por Java.
pilha de objetos privados[];
//Tamanho inicial padrão da pilha
final estático privado int INIT_SIZE = 2;
//Pilha o índice superior
índice interno privado;
publicStack() {
pilha = novo Objeto[INIT_SIZE];
índice = -1;
}
/**
*Método de construção
*
* @param initSize
* Tamanho inicial da pilha
*/
pilha pública(int initSize) {
if (initSize < 0) {
lançar new IllegalArgumentException();
}
pilha = novo Objeto[initSize];
índice = -1;
}
/**
* Operação pop
*
* @return objeto do topo da pilha
*/
público sincronizado E pop() {
if (!isEmpty()) {
E temp = espiar();
pilha[índice--] = nulo;
temperatura de retorno;
}
retornar nulo;
}
/**
* Operação push
*
* @param obj
* Objeto esperando para ser colocado na pilha
*/
público sincronizado void push(E obj) {
if (isFull()) {
Objeto[] temp = pilha;
// Se a pilha estiver cheia, cria uma pilha com o dobro do espaço da pilha atual
pilha = novo Objeto[2 * pilha.comprimento];
System.arraycopy(temp, 0, pilha, 0, temp.length);
}
pilha[++índice] = obj;
}
/**
* Veja o objeto no topo da pilha
*
* @return objeto do topo da pilha
*/
público E espiada() {
if (!isEmpty()) {
return (E) pilha[índice];
}
retornar nulo;
}
/**
* Verifique se a pilha está vazia
*
* @return Retorna verdadeiro se a pilha estiver vazia, caso contrário retorna falso
*/
public boolean isEmpty() {
índice de retorno == -1;
}
/**
* Verifique se a pilha está cheia
*
* @return Retorna verdadeiro se a pilha estiver cheia, caso contrário retorna falso
*/
public boolean isFull() {
índice de retorno >= stack.length - 1;
}
}
Finalmente, a estrutura de dados da pilha (java.util.Stack) é implementada em Java. Ela é implementada herdando a classe Vector. Em circunstâncias normais, podemos simplesmente usá-la diretamente.