public final class LinkedStack<T> {
private Node top = new Node(); // End sentinel
public static void main(String[] args) {
LinkedStack<String> lss = new LinkedStack<>();
for (String s : "Phaser's on stun!".split(" ")) lss.push(s);
String s;
while ((s = lss.pop()) != null) {
System.out.println(s);
}
}
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;
}
/** 内部类可以访问其外部类的类型参数(去掉static,因为静态内部类是独立的类) */
private class Node {
T item;
Node next;
Node() {
item = null;
next = null;
}
Node(T item, Node next) {
this.item = item;
this.next = next;
}
boolean end() {
return item == null && next == null;
}
}
}
证明内部类可以访问其外部类的类型参数
最新推荐文章于 2022-06-02 13:20:25 发布
该博客展示了如何使用Java实现一个基于链表的栈数据结构`LinkedStack`,并提供了`push`和`pop`操作。栈使用内部类`Node`作为节点,包含一个数据项和指向下一个节点的引用,同时还有一个`end`方法来检查节点是否为栈底。示例代码中,栈被用来存储字符串,并逐个弹出打印。
摘要由CSDN通过智能技术生成