Salinan kode adalah sebagai berikut:
impor java.util.arrays;
/**
*Implementasi tumpukan <br>
* @author lewati
* @Version 1.0
*/
Tumpukan kelas publik <T> {
ukuran int pribadi; // jumlah elemen dalam tumpukan
objek pribadi [] arr; // array yang mendasarinya
private final int defaultlength = 200; // panjang default
/**
* Tidak ada konstruk parameter, inisialisasi array dengan panjang default
*/
stack publik () {
arr = objek baru [DefaultLength];
ukuran = 0;
}
/**
* Inisialisasi array dengan parameter panjang
* Panjang @param
*/
tumpukan publik (panjang int) {
arr = objek baru [panjang];
ukuran = 0;
}
/**
* Masukkan tumpukan
* Data elemen @param
*/
public void push (elemen t) {
// Apakah perlu memperluas kapasitas
if (size> = arr.length) {
// Ekspansi array
ExtentCapacity (ukuran+1);
}
arr [size ++] = elemen;
}
/**
* Keluar dari tumpukan
* @Return data
*/
@SuppressWarnings ("Uncecked")
public t pop () {
// Jumlah elemen adalah 0, dan operasi penumpukan tidak dapat dilakukan
if (size == 0) {
kembali nol;
}
T t = (t) arr [size-1];
arr [-size] = null; // data telah dirilis dan dipulihkan ke nol
mengembalikan t;
}
/**
* Bersihkan tumpukannya
*/
public void clear () {
untuk (int i = 0; i <size; i ++) {
arr [i] = null;
}
ukuran = 0;
}
/**
* Dapatkan jumlah elemen di tumpukan saat ini
* @return Jumlah elemen
*/
public int getSize () {
ukuran pengembalian;
}
/**
* Tentukan apakah itu tumpukan kosong
* @return kosong itu benar, tidak kosong itu salah
*/
public boolean isEmpty () {
ukuran pengembalian == 0;
}
/**
* Semua elemen di tumpukan cetak
*/
@SuppressWarnings ("Uncecked")
public void printStack () {
untuk (int i = 0; i <size; i ++) {
System.out.print (((t) arr [i]). Tostring ());
}
System.out.println ();
}
/**
* Perluas kapasitas
* @param panjang panjang yang dibutuhkan
*/
Private Void Extendcapacity (panjang int) {
// Panjang array saat ini dan panjang yang dibutuhkan harus maksimal
int cincapacity = math.max (arr.length, length);
// menilai apakah perluasan kapasitas diperlukan
if (mincapacity - arr.length> 0) {
// Panjang array meningkat setengahnya
int newlength = arr.length + arr.length/2;
// Jika panjang baru lebih kecil dari persyaratan, gunakan panjang yang diperlukan sebagai panjang array
if (newLength <Minsapacity) {
newLength = mincapacity;
}
// Panjang array tidak dapat melebihi integer.max_value
if (newLength> integer.max_value - 8) {
newLength = integer.max_value;
}
// Ekspansi array
arr = arrays.copyof (arr, newlength);
}
}
}