废话不多说,先上代码
public class Test {
public static void main(String[] args) {
LinkedStack lss = new LinkedStack();
for (String s : "Phasers on stun".split(" "))
lss.push(s);
String s;
while ((s = lss.pop()) != null) {
System.out.println(s);
}
}
}
class LinkedStack {
private static class Node {
U item;
Node next;
Node() {
this.item = null;
this.next = null;
}
Node(U item, Node next) {
this.item = item;
this.next = next;
}
boolean end() {
return item == null && next == null;
}
}
private Node top = new Node();
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;
}
}
程序经测试可以正常运行,这里采用链表来进行数据的传输,不过比较疑惑的一点是关于遍历的pop方法,哪里判断top不为空的时候指向下一个元素,但是我比较疑惑的是top默认指向的是链表尾端的next,之前的next应该已经覆盖掉了啊,为啥能找得到之前的nex节点呢?而且看一些教程上的便利都是从头节点遍历的,,,为什么能找到之前的next节点?求解惑,感激不尽