Кода -копия выглядит следующим образом:
импортировать java.util.arrays;
/**
*Реализация стека <br>
* @author Skip
* @version 1.0
*/
стек открытого класса <T> {
частный размер Int; // Количество элементов в стеке
Частный объект [] arr; // Основной массив
Private Final int defaultLength = 200; // Длина по умолчанию
/**
* Нет конструкции параметров, инициализируйте массив с длиной по умолчанию
*/
public Stack () {
arr = новый объект [DefaultLength];
размер = 0;
}
/**
* Инициализировать массив с параметрами длины
* @param длина
*/
public Stack (int length) {
arr = новый объект [длина];
размер = 0;
}
/**
* Введите стек
* @param element Данные
*/
public void push (t -элемент) {
// необходимо ли расширить емкость
if (size> = arr.length) {
// расширение массива
extendcapacity (размер+1);
}
arr [size ++] = элемент;
}
/**
* Из стека
* @return Data
*/
@Suppresswarnings ("не контролировано")
public t pop () {
// количество элементов равно 0, а операция по укладке не может быть выполнена
if (size == 0) {
вернуть ноль;
}
T t = (t) arr [size-1];
arr [-size] = null; // данные были выпущены и восстановлены в NULL
возврат t;
}
/**
* Очистить стек
*/
public void clear () {
для (int i = 0; i <size; i ++) {
arr [i] = null;
}
размер = 0;
}
/**
* Получите количество элементов в текущем стеке
* @return Количество элементов
*/
public int getSize () {
возвратный размер;
}
/**
* Определите, является ли это пустым стеком
* @return пусто-это правда, непустые ложно
*/
public boolean isempty () {
вернуть размер == 0;
}
/**
* Все элементы в стеке печати
*/
@Suppresswarnings ("не контролировано")
public void printStack () {
для (int i = 0; i <size; i ++) {
System.out.print (((t) arr [i]). ToString ());
}
System.out.println ();
}
/**
* Расширить емкость
* @param длиной требуемой длины
*/
private void extendCapacity (int length) {
// текущая длина массива и требуемая длина должны быть максимальными
int mincapacity = math.max (arr.length, длина);
// Требуется ли расширение емкости
if (mincapacity - arr.length> 0) {
// длина массива увеличивается наполовину
int newlength = arr.length + arr.length/2;
// Если новая длина меньше требования, используйте требуемую длину в качестве длины массива
if (newlength <mincapacity) {
newlength = mincapacity;
}
// длина массива не может превышать integer.max_value
if (newlength> integer.max_value - 8) {
newlength = integer.max_value;
}
// расширение массива
arr = arrays.copyof (arr, newlength);
}
}
}