Я думаю, что текст автора настолько хорош, что мне придется его сохранить.
Понимание этого примера:
//Параметры типа не могут использовать базовые типы. T и U на самом деле являются одним и тем же типом.
//Каждый раз, когда размещаются новые данные, они становятся новой вершиной. Сдвиньте исходную вершину на один уровень вниз и установите ссылку через указатель.
//Конечный страж — это узел, созданный конструктором по умолчанию, который соответствует методу end(), возвращающему true.
Скопируйте код кода следующим образом:
//: дженерики/LinkedStack.java
// Стек, реализованный с внутренней связанной структурой.
дженерики пакетов;
общественный класс LinkedStack<T> {
частный статический класс Node<U> {
U предмет;
Узел<U> следующий;
Узел () {элемент = ноль; следующий = ноль};
Node(U item, Node<U> следующий) {
this.item = элемент;
это.следующий = следующий;
}
boolean end() { return item == null && next == null };
}
частный Node<T> top = new Node<T>(); // Конечный страж
public void push(T item) {
верх = новый Node<T>(пункт, верх);
}
общественный Т поп () {
Т результат = топ.элемент;
если(!top.end())
верх = топ.следующий;
вернуть результат;
}
public static void main(String[] args) {
LinkedStack<String> lss = новый LinkedStack<String>();
for(String s : "Фазеры при оглушении!".split(" "))
lss.push(ы);
Строка сс;
while((ss = lss.pop()) != null)
System.out.println(СС);
//----- если поместить целое число в LinkedList
LinkedStack<Integer> lii = новый LinkedStack<Integer>();
for(Целое число я = 0; я <10; я++){
lii.push(я);
}
Целочисленный конец;
while((end = lii.pop()) != null)
System.out.println(конец);
//----- целочисленный тест завершен!
}
}
/* Выход:
ошеломить!
на
Фазеры
*/