44 lines
1.0 KiB
Java
44 lines
1.0 KiB
Java
// generics/LinkedStack.java
|
|
// (c)2020 MindView LLC: see Copyright.txt
|
|
// We make no guarantees that this code is fit for any purpose.
|
|
// Visit http://OnJava8.com for more book information.
|
|
// 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;
|
|
}
|
|
}
|
|
private Node<T> top = new Node<>(); // End sentinel
|
|
public void push(T item) {
|
|
top = new Node<>(item, top);
|
|
}
|
|
public T pop() {
|
|
T result = top.item;
|
|
if(!top.end())
|
|
top = top.next;
|
|
return result;
|
|
}
|
|
public static void main(String[] args) {
|
|
LinkedStack<String> lss = new LinkedStack<>();
|
|
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
|
|
*/
|