package stack2;
public interface StackADT {
/**
* 添加元素
* @param object
*/
void push(Object object);
/**
* 弹出元素
* @return
*/
Object pop() ;
/**
* 访问栈顶元素
* @return
*/
Object peek();
/**
* 是否为空
* @return
*/
boolean isEmpty();
/**
* 大小
* @return
*/
int size();
}
package stack2;
import java.util.Arrays;
/**
* 数组模拟栈
* @author cs
*
*/
public class ArrayStack implements StackADT{
private int top; //当前位置
private Object [] stack; //数组栈
private int DEFAULT_SIZE = 10; //默认大小
public ArrayStack() {
this.top = 0;
stack = new Object [DEFAULT_SIZE];
}
@Override
public void push(Object object) {
if(size() == stack.length) {
expandCapaCity();
}
stack[top] = object;
top ++;
}
/**
* 扩展长度
*/
public void expandCapaCity() {
stack = Arrays.copyOf(stack, stack.length * 2);
}
@Override
public Object pop() {
// TODO Auto-generated method stub
if(isEmpty()) {
return null;
}
top --;
Object result = stack[top];
stack[top] = null;
return result;
}
@Override
public Object peek() {
// TODO Auto-generated method stub
if(isEmpty()) {
return null;
}
return stack[top - 1];
}
@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return top == 0;
}
@Override
public int size() {
// TODO Auto-generated method stub
return stack.length;
}
}
java用数组模拟栈
最新推荐文章于 2023-06-23 20:53:10 发布