栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。栈最大的特点就是先进后出
上面是栈存取数据的示意图,栈主要分为两种结构:基于数组实现的数组栈和基于链表实现的链栈,总的来说都是栈结构,实现的都是栈的基本操作,而栈的操作需要具体的结构去实现,因此数组栈和链栈都是实现的栈接口,我们先定义一个栈接口:
interface Stack {
public abstract void push(int e); //入栈操作
public abstract int pop(); //弹栈
public abstract int length(); //有效元素个数
public abstract boolean isEmpty(); //判空操作
}
数组栈/顺序栈:由数组实现的,但是不提供角标的访问,只在栈顶进行操作。
/*