栈是限定仅在表尾进行插入和删除操作的线性表
- 把允许插入和删除的一端称为栈顶,另一端称为栈底
- 不含任何数据元素的栈称为空栈
- 栈的插入操作称为进栈
- 删除操作称为出栈
Stack栈接口的定义
根据栈的顺序存储和链表存储的共性定义出Stack接口
ArrayStack类
为栈的顺序存储的具体实现
public class ArrayStack<E> implements Stack<E> { private Arraylist<E> list; public ArrayStack(){ list=new Arraylist<E>(); } public ArrayStack(int capacity){ list=new Arraylist<E>( capacity); } @Override public int size() { return list.size(); } @Override public boolean isEmpty() { return list.isEmpty(); } @Override public void push(E element) { list.add(element); } @Override public E pop() { return list.remove(list.size()-1); } @Override public E peek() { return list.get(list.size()-1); } @Override public void clear() { list.clear(); } @Override public Iterator<E> iterator() { return list.iterator(); } public String toString(){ return list.toString(); } public boolean equals(Object o){ if(o==null){ return false; } if(this==o){ return true; } if(o instanceof ArrayStack){ ArrayStack <E>other= (ArrayStack<E>) o; return this.list.equals(other.list); } return false; } }