OnJava8-Examples/generics/LinkedStack.java

39 lines
924 B
Java
Raw Normal View History

2015-04-20 15:36:01 -07:00
//: generics/LinkedStack.java
2015-05-29 14:18:51 -07:00
// <20>2015 MindView LLC: see Copyright.txt
2015-04-20 15:36:01 -07:00
// A stack implemented with an internal linked structure.
public class LinkedStack<T> {
private static class Node<U> {
U item;
Node<U> next;
Node() { item = null; next = null; }
Node(U item, Node<U> next) {
this.item = item;
this.next = next;
}
boolean end() { return item == null && next == null; }
}
2015-05-05 11:20:13 -07:00
private Node<T> top = new Node<>(); // End sentinel
2015-04-20 15:36:01 -07:00
public void push(T item) {
2015-05-05 11:20:13 -07:00
top = new Node<>(item, top);
2015-05-18 23:05:20 -07:00
}
2015-04-20 15:36:01 -07:00
public T pop() {
T result = top.item;
if(!top.end())
top = top.next;
return result;
}
public static void main(String[] args) {
2015-05-05 11:20:13 -07:00
LinkedStack<String> lss = new LinkedStack<>();
2015-04-20 15:36:01 -07:00
for(String s : "Phasers on stun!".split(" "))
lss.push(s);
String s;
while((s = lss.pop()) != null)
System.out.println(s);
}
} /* Output:
stun!
on
Phasers
*///:~