栈的定义
栈是限定仅在表尾进行插入和删除操作的线性表。
我们把允许插入和删除的一端称为栈顶,另一端称为栈底。
不含任何数据元素的栈称为空栈。
在日常生活中,子弹的装填就是栈的例子,子弹一颗一颗压入,如同进栈,一颗一颗射出,如同出栈。
进栈
空栈,元素未进栈
元素依次进栈,最先进栈的元素被压入栈底。
出栈
栈顶元素先出栈,栈底最后出栈,也就是说最先进入的元素最后出栈,如同现实生活中子弹的弹匣。
栈的实现
创建一个默认大小的栈(顺序表)
public ArrayStack() {
list =new ArrayList<E>();
}
创建一个容量为指定capacity的栈
public ArrayStack(int capacity) {
list = new ArrayList<E>(capacity);
}
获取元素个数-getSize()
@Override
public int getSize() { //获取元素个数
return list.getSize();
}
判断栈是否为空-isEmpty()
@Override
public boolean isEmpty() { //判断是否为空
return list.isEmpty();
}
插入元素-push()
@Override
public void push(E e) { //栈顶插入元素
list.addLast(e);
}
删除元素-pop()
@Override
public E pop() { //删除栈顶元素
return list.removeLast();
}
获取栈顶元素-peek()
@Override
public E peek() { //获取栈顶元素
return list.getLast();
}
获取栈底元素-first()
public E first() { //获取栈底元素
return list.getFirst();
}
清空栈-clear()
@Override
public void clear() { //清空栈
list.clear();
}
比较方法-equals()
@Override
public boolean equals(Object obj) { //两个栈比较
if(obj == null) { //如果为空返回false
return false;
}
if(obj =