二、定义Stack接口
public interface Stack<E> {
/**
* 栈是否为空
* @return
*/
boolean isEmpty();
/**
* 往栈中添加元素
* @param e
*/
void push(E e);
/**
* 出栈
* @return
*/
E pop();
/**
* 查看栈顶元素
* @return
*/
E peek();
}
三、编写ArrayStack实现 Stack接口 实现栈的基本操作
public class ArrayStack<E> implements Stack<E> {
private Array<E> array;
public ArrayStack(int initCapacity){
array=new Array<>(initCapacity);
}
public ArrayStack(){
array=new Array<>();
}
/**
* 判断栈是否为空
* @return
*/
@Override
public boolean isEmpty() {
return array.isEmpty();
}
/**
* 向栈里加入元素
*/
@Override
public void push(E e) {
array.add(e);
}
/**
*
* @return
*/
@Override
public E pop() {
return array.removeLast();
}
@Override
public E peek() {
return array.getLast();
}
@Override
public String toString() {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("Stack:【");
for (int i = 0; i < array.getSize(); i++) {
stringBuilder.append(array.get(i));
if(i!=array.getSize()-1){
stringBuilder.append(",");
}
}
stringBuilder.append("】");
return stringBuilder.toString();
}
}
四、测试:
public static void main(String[] args) {
ArrayStack<Integer> arrayStack=new ArrayStack<>();
for (int i=0;i<4;i++){
//往栈中添加4个元素
arrayStack.push(i);
}
//查看栈内元素
System.out.println(arrayStack);
//出栈了一个元素
arrayStack.pop();
//再次查看栈内元素
System.out.println(arrayStack);
//查看栈顶元素
System.out.println(arrayStack.peek());
}