栈
- 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。
- 向栈顶加入元素的操作被称为进栈、入栈或压栈。
- 从栈顶取出元素的操作被称为出栈或退栈。
栈的代码实现
- 我们使用数组作为栈的实现基础,栈底默认设置为0;
- 对于栈顶指针,我们可以定义它的功能为指向栈顶元素的指针(索引)。因此栈的几种特殊状态可以表示为:
- 栈空:栈顶等于
-1
。 - 栈满:栈顶等于
n-1
,其中n为数组的长度。
- 那么栈的Java实现可以为:
package 数据结构;
public class Stack<T> {
private int top = -1;
private final T[] stack;
public final int size;
Stack(int size, T[] array) {
this.size = size;
stack = array;
}
public boolean push(T element) {
if (top < size - 1) {
stack[++top] = element;
return true;
} else return false;
}
public T pop() {
if (top >= 0) return stack[top--];
else return null;
}
public boolean isEmpty() {return top < 0;}
public boolean isFull() {return top >= size - 1;}
public int getElementNumber() { return top + 1; }
}