顺序栈(SequenceStack)
//顺序栈
public class SequenceStack{
Object[] stack; //对象数组(栈用数组来实现)
final int defaultSize = 10; //默认最大长度
int top; //栈顶位置(的一个下标):其实可以理解成栈的实际长度
int maxSize; //最大长度
//如果用无参构造的话,就设置默认长度
public SequenceStack() {
init(defaultSize);
}
//如果使用带参构造的话,就调用指定的最大长度
public SequenceStack(int size) {
init(size);
}
public void init(int size) {
this.maxSize = size;
top = 0;
stack = new Object[size];
}
//获取栈顶元素
public Object getTop() throws Exception {
// TODO Auto-generated method stub
if (isEmpty()) {
throw new Exception("堆栈为空!");
}
return stack[top - 1];
}
//判断栈是否为空
public boolean isEmpty() {
return top == 0;
}
//出栈操作
public Object pop() throws Exception {
if (isEmpty()) {
throw new Exception("堆栈为空!");
}
top--;
return stack[top];
}
//入栈操作
public void push(Object obj) throws Exception {
//首先判断栈是否已满
if (top == maxSize) {
throw new Exception("堆栈已满!");
}
stack[top] = obj;
top++;
}
}
Last updated