La copie de code est la suivante:
import java.util.arrays;
/ **
* Implémentation de pile <br>
* @author skip
* @version 1.0
* /
Stack de classe publique <T> {
taille int privée; // le nombre d'éléments dans la pile
objet privé [] arr; // le tableau sous-jacent
private finm int defaultLength = 200; // la longueur par défaut
/ **
* Aucune construction de paramètres, initialisez le tableau avec une longueur par défaut
* /
Stack public () {
arr = nouvel objet [defaultLength];
taille = 0;
}
/ **
* Initialisez le tableau avec des paramètres de longueur
* la longueur @param
* /
Public Stack (int longueur) {
arr = nouvel objet [longueur];
taille = 0;
}
/ **
* Entrez la pile
* Données d'élément @param
* /
PUBLID VOID PUSH (élément t) {
// est-il nécessaire d'élargir la capacité
if (size> = arr.length) {
// Extension du tableau
extensioncapacité (taille + 1);
}
arr [size ++] = élément;
}
/ **
* Hors de la pile
* Données @return
* /
@SuppressWarnings ("non contrôlé")
public t pop () {
// Le nombre d'éléments est de 0, et l'opération d'empilement ne peut pas être effectuée
if (size == 0) {
retourner null;
}
T t = (t) arr [size-1];
arr [- size] = null; // Les données ont été publiées et restaurées à NULL
retour t;
}
/ **
* Effacer la pile
* /
public void clear () {
pour (int i = 0; i <size; i ++) {
arr [i] = null;
}
taille = 0;
}
/ **
* Obtenez le nombre d'éléments dans la pile actuelle
* @return Nombre d'éléments
* /
public int getSize () {
taille de retour;
}
/ **
* Déterminez s'il s'agit d'une pile vide
* @return vide est vrai, non vide est faux
* /
public booléen iSempty () {
taille de retour == 0;
}
/ **
* Tous les éléments de la pile d'impression
* /
@SuppressWarnings ("non contrôlé")
public void printstack () {
pour (int i = 0; i <size; i ++) {
System.out.print (((t) arr [i]). ToString ());
}
System.out.println ();
}
/ **
* Élargir la capacité
* @param longueur la longueur requise
* /
Private void extendCapacity (int longueur) {
// La longueur de réseau actuelle et la longueur requise doivent être le maximum
int mincapacity = math.max (arr.length, longueur);
// juger si l'expansion de la capacité est requise
if (mincapacity - arr.length> 0) {
// la longueur du tableau augmente de moitié
int newLength = arr.length + arr.length / 2;
// Si la nouvelle longueur est plus petite que l'exigence, utilisez la longueur requise comme longueur de tableau
if (newLength <mincapacity) {
newLength = mincapacity;
}
// La longueur du tableau ne peut pas dépasser Integer.max_value
if (newLength> Integer.max_value - 8) {
newLength = Integer.max_value;
}
// Extension du tableau
arr = arrays.copyof (arr, newLength);
}
}
}