栈
栈的性质是先进后出(FILO first in last out),栈是我们计算机底层重要的数据接口,很多地方都实现了栈的接口,比如我们在学习汇编语言的时候8086CPU就有一个段寄存器ss(存放栈顶的段地址)和寄存器sp(存放栈顶的偏移地址),通过这两个寄存器来实现栈的指向。
栈的存储有顺序存储和非顺序存储,顺序存储如使用数组存储,在前面的博客中已经实现了(栈的顺序存储实现)。顺序存储中的时间复杂度为O(1),而在非顺序存储中的时间复杂度也是O(1)。在给出非顺序存储的实现前,我们先引入下面的结点和其实现类。
Node.java
public interface Node {
public Object getData(); // 获取数据
public void setData(Object element); // 设置数据
}
SLNode.java
public class SLNode implements Node {
private Object element;
private SLNode next;
public SLNode() {
this(null,null);
}
public SLNode(Object element, SLNode next) {
this.element = element;
this.next = next;
}
public SLNode getNext() {
return next;
}
public void setNext(SLNode next) {
this.next = next;
}
&