栈接口定义
/**
* 栈是一种特殊的数据结构,是数组操作的一种子集
*
* @author zyw
*/
public interface MyStack<E> {
/**
* @Desc 添加一个元素
* @param e
* @Author zyw
* @Date 2019年3月6日下午6:32:24
*/
void push(E e);
/**
* @Desc 取出栈顶的元素
* @return E
* @Author zyw
* @Date 2019年3月6日下午6:32:50
*/
E pop();
/**
* @Desc 查看栈顶的元素
* @return E
* @Author zyw
* @Date 2019年3月6日下午6:33:21
*/
E peek();
/**
* @Desc 获取栈元素的数量
* @return int
* @Author zyw
* @Date 2019年3月6日下午6:33:42
*/
int getSize();
/**
* @Desc 判断栈是否为空
* @return boolean
* @Author zyw
* @Date 2019年3月6日下午6:34:01
*/
boolean isEmpty();
}
使用动态数组实现栈
public class ArrayStack<E> implements MyStack<E> {
private GenericArray<E> array;
public ArrayStack() {
super();
this.array = new GenericArray<E>();
}
/**
* 构造函数构造固定容积的栈
*
* @param capacity
*/
public ArrayStack(int capacity) {
super();
this.array = new GenericArray<E>(capacity);
}
@Override
public void push(E e) {
array.addLast(e);
}
@Override
public E pop() {
return array.removeLast();
}
@Override
public E peek() {
return array.getLast();
}
@Override
public int getSize() {
return array.getIndex();
}
@Override
public boolean isEmpty() {
return array.getIndex() == 0;
}
/**
* @Desc 获取栈的底层数组容积
* @return int
* @Author zyw
* @Date 2019年3月6日下午6:48:06
*/
public int getCapacity() {
return array.getCapacity();
}
@Override
public String toString() {
StringBuilder res = new StringBuilder();
res.append("Stack :[");
for (int i = 0; i < array.getIndex(); i++) {
res.append(array.get(i));
if (i != array.getIndex() - 1) {
res.append(" ,");
}
}
res.append("] top");
return res.toString();
}
}