(带头)链栈与顺序栈区别
链栈和顺序栈的区别在于,链栈不受空间限制,根据链表生成,如图,首先观察它的特点:
灰色表示真实数据,而top指向的结点,称之为头结点,它的数据项没存入数据,仅仅是做为一个头结点存在。在链栈的初始化中,首先创建了一个头结点,但是里面没有存放数据,如果可能,存放链栈的长度也是可以的。
像顺序栈一样,我们先创建Node结点类,还有创建要用到的接口类
接口类
public interface IStack {
public void clear();
public boolean isEmpty();
public int length();
public Object peek() ;
public void push(Object x)throws Exception;
public Object pop();
public void display();
}
Node结点类
public class Node {
public Object data; //存结点值
public Node next; //后继结点的引用
//无参时的构造函数
public Node() {
this(null,null);
}
//单参时的构造函数
public Node(Object data) {
this(data,null);
}
//两个参时的构造函数
public Node(Object data, Node next) {
this.data = data;
this.next = next;
}
}
链栈的基本操作实现
判空方法
public boolean isEmpty() {
return top == null;
}
求链栈长度的算法
结合注释理解哦