Acho a escrita do autor tão boa que tenho que salvá-la.
Compreensão deste exemplo:
//Os parâmetros de tipo não podem usar tipos básicos. T e U são na verdade do mesmo tipo.
//Cada vez que novos dados são colocados, eles se tornam um novo topo. Empurre o topo original um nível para baixo e estabeleça um link através do ponteiro.
//O sentinela final é um nó criado pelo construtor padrão que é consistente com end() retornando verdadeiro.
Copie o código do código da seguinte forma:
//: genéricos/LinkedStack.java
// Uma pilha implementada com uma estrutura vinculada internamente.
genéricos de pacotes;
classe pública LinkedStack<T> {
classe estática privada Node<U> {
item U;
Nó<U> próximo;
Nó() { item = nulo; próximo = nulo }
Nó(item U, Nó<U> próximo) {
este.item = item;
este.próximo = próximo;
}
boolean end() { return item == null && next == null }
}
private Node<T> top = new Node<T>(); // Fim da sentinela
public void push(item T) {
topo = novo Nó<T>(item, topo);
}
público T pop() {
Resultado T = item superior;
if(!top.end())
topo = topo.próximo;
resultado de retorno;
}
public static void main(String[] args) {
LinkedStack<String> lss = new LinkedStack<String>();
for(String s: "Phasers em atordoamento!".split(" "))
lss.push(s);
String ss;
while((ss = lss.pop()) != nulo)
System.out.println(ss);
//----- se colocar inteiro no LinkedList
LinkedStack<Integer> lii = new LinkedStack<Integer>();
for(Inteiro i = 0; i < 10; i++){
lii.push(i);
}
Fim inteiro;
while((fim = lii.pop()) != nulo)
System.out.println(fim);
//----- final do teste inteiro!
}
}
/* Saída:
atordoar!
sobre
Phasers
*/