//定义栈的基本操作
interface IStack{
int push(int element);
int pop();
boolean isEmpty();
int size();
int peek();
}
public class MyStack implements IStack{
private static final int CAPITILY = 10;//初始容量10
private static final int FACTOR = 2;//默认扩容之前的两倍
private int mSize = 0;//记录元素个数
private int[] mArray = new int[CAPITILY];//核心数组
@Override
public int push(int element) {
if (mSize >= mArray.length) {
//数组满了,需要扩容。
int[] newArray = new int[mArray.length * FACTOR];
System.arraycopy(mArray,0,newArray,0,mArray.length);
mArray = newArray;
}
mArray[mSize++] = element;
return element;
}
@Override
public int pop() {
if (mSize > 0) {
int ele = mArray[mSize - 1];
mArray[mSize - 1] = 0;
mSize--;
return ele;
} else {
throw new EmptyStackException();
}
}
@Override
public int peek() {
if (mSize > 0) {
return mArray[mSize - 1];
} else {
throw new EmptyStackException();
}
}
@Override
public boolean isEmpty() {
return mSize==0;
}
@Override
public int size() {
return mSize;
}
}
Java用数组实现一个栈
最新推荐文章于 2022-10-23 10:40:29 发布