代码里有注释
接口类:
package com.stack;
import sun.reflect.generics.tree.VoidDescriptor;
public interface IStack {
public void clear();
public boolean isEmpty();
public int length();
public Object peek();//取栈顶元素并返回其值,若为空则返回null
public void push(Object x)throws Exception;//入栈
public Object pop();//出栈
public void display();
}
顺序栈类:
package com.stack;
import com.sun.javafx.sg.prism.web.NGWebView;
public class SqStack implements IStack {
private Object[] stackElem;// 对象数组
private int top;// 在非空栈中,top始终指向栈顶元素的下一个位置,
// 当栈为空是,top=0
// 构造一个存储空间为maxSize的空栈
public SqStack(int maxSize) {
top = 0;// 初始化top为0
stackElem = new Object[maxSize];// 为栈分配maxSize个存储单元
}
// 栈置空
@Override
public void clear() {
top = 0;
}
@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return top == 0;
}
@Override
public int length() {
// TODO Auto-generated method stub
return top;
}
@Override
public Object peek() {
if (!isEmpty()) {
return stackElem[top - 1];
} else
return null;
}
@Override
public void push(Object x) throws Exception {
// TODO Auto-generated method stub
if((int) stackElem.length==top){
throw new Exception("栈已满");
}
else{
stackElem[top++]=x;
}
}
@Override
public Object pop() {
if(isEmpty())
return null;
else{
return stackElem[--top];
}
}
@Override
public void display() {
for (int i = top - 1; i >= 0; i--) {
System.out.printf(stackElem[i].toString() + " ");
}
}
}