A cópia do código é a seguinte:
importar java.util.arrays;
/**
*Implementação de pilha <br>
* @Author Skip
* @version 1.0
*/
classe pública Stack <t> {
Tamanho privado int; // O número de elementos na pilha
objeto privado [] arr; // a matriz subjacente
private final int defaultLength = 200; // Comprimento padrão
/**
* Nenhum parâmetro construto, inicialize a matriz com comprimento padrão
*/
public Stack () {
arr = novo objeto [defaultLength];
tamanho = 0;
}
/**
* Inicialize a matriz com parâmetros de comprimento
* @param Comprimento
*/
pilha pública (comprimento int) {
arr = novo objeto [comprimento];
tamanho = 0;
}
/**
* Digite a pilha
* Dados do elemento @param
*/
public void push (elemento t) {
// é necessário expandir a capacidade
if (size> = arr.length) {
// Expansão da matriz
ExtendCapacity (tamanho+1);
}
arr [size ++] = elemento;
}
/**
* Fora da pilha
* Dados @return
*/
@Suppresswarnings ("sem controle")
public T POP () {
// O número de elementos é 0 e a operação de empilhamento não pode ser realizada
if (size == 0) {
retornar nulo;
}
T t = (t) arr [size-1];
arr [-size] = nulo; // Os dados foram liberados e restaurados para nulo
retornar t;
}
/**
* Limpe a pilha
*/
public void clear () {
for (int i = 0; i <tamanho; i ++) {
arr [i] = null;
}
tamanho = 0;
}
/**
* Obtenha o número de elementos na pilha atual
* @return Número de elementos
*/
public int getSize () {
tamanho de retorno;
}
/**
* Determinar se é uma pilha vazia
* @return vazio é verdadeiro, não vazio é falso
*/
public boolean isEmpty () {
tamanho de retorno == 0;
}
/**
* Todos os elementos na pilha de impressão
*/
@Suppresswarnings ("sem controle")
public void PrintStack () {
for (int i = 0; i <tamanho; i ++) {
System.out.print (((t) arr [i]). Tostring ());
}
System.out.println ();
}
/**
* Expandir a capacidade
* @param Comprimento do comprimento necessário
*/
Void privado ExtendCapacity (Int Length) {
// O comprimento da matriz atual e o comprimento necessário devem ser o máximo
int mincapacity = math.max (ar.Length, comprimento);
// julga se a expansão da capacidade é necessária
if (Mincapacity - arr.length> 0) {
// O comprimento da matriz é aumentado pela metade
int newLength = arr.length + ar.Length/2;
// Se o novo comprimento for menor que o requisito, use o comprimento necessário como o comprimento da matriz
if (newLength <mincapacity) {
newLength = MinCapacity;
}
// O comprimento da matriz não pode exceder o número inteiro.max_value
if (newLength> Integer.max_value - 8) {
newLength = Integer.max_value;
}
// Expansão da matriz
arr = Arrays.copyof (arr, newLength);
}
}
}