使用自定义动态数组实现栈这种线性数据结构
栈接口定义:
public interface Stack<E> {
int getSize();
boolean isEmpty();
//入栈
void push(E e);
//出栈
E pop();
//获取栈顶元素
E peek();
}
实现Stack这个接口:
1、入栈
2、出栈
3、查看栈顶元素
/**
* 使用动态数组实现栈这种线性数据结构
* 栈的应用:Undo(撤销),程序调用的系统栈,括号匹配(栈顶元素反映了在嵌套的层次关系中,最近的需要匹配的元素)
* 栈对应的操作是数组的子集
* 只能从一端添加元素,也只能从这一端进行取出,这一端称为栈顶
* @author f242
* @since V1.0.0
* 2020-03-20 19:52
*/
public class ArrayStack<E> implements Stack<E> {
Array<E> array;
/**
* 构造函数
* @param capacity
*/
public ArrayStack(int capacity){
array = new Array<>(capacity);
}
/**
*默认构造函数
*/
public ArrayStack(){
array = new Array<>();
}
@Override
public int getSize(){
return array.getSize();
}
@Override
public boolean isEmpty(){
return array.isEmpty();
}
public int getCapacity(){
return array.getCapacity();
}
@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 String toString(){
StringBuilder res = new StringBuilder();
res.append("ArrayStack:");
res.append("[");
for(int i=0;i<array.getSize();i++){
res.append(array.get(i));
if(i !=array.getSize()-1){
res.append(", ");
}
}
res.append("]top");
return res.toString();
}
}