栈
- 栈是一种特殊的线性表,只能在一端进行操作
- 往栈中添加元素的操作,叫做入栈,push
- 往栈中删除元素的操作,叫做出栈,pop(只能删除栈顶元素)
- 栈的内部实现可以使用动态数组或链表实现
- 栈的主要操作是在尾部进行添加或删除元素
- 后进先出原则:Last In First Out(LIFO)
![栈的基本展示](https://i-blog.csdnimg.cn/blog_migrate/5fe2f0e718256d4e47ae5a9efa4b0194.png)
栈的接口设计
- public lit size(); //元素数量
- public boolean isEmpty(); //是否为空
- public void push(E element); //入栈
- public void pop(); //出栈
- public E top(); //获取栈顶元素 说明:官方API为peek()
- public void clear(); //清空栈
栈的实现
public class Stack<E> {
// 使用动态数组存储数据
private ArrayList<E> list = new ArrayList<>();
public int size() {
// 栈中元素数量, 就是列表中存储的元素数量
return list.size();
}
public boolean isEmpty() {
// 栈是否空, 就是列表是否空
return list.isEmpty();
}
public void push(E element) {
// 入栈, 将元素添加到列表的最后面
list.add(element);
}
public E pop() {
// 出栈, 将列表中最后一个元素删除并返回
return list.remove(list.size() - 1);
}
public E top() {
// 查看栈顶元素, 就是查看列表中的最后一个元素
return list.get(list.size() - 1);
}
public void clear() {
// 清空栈, 就是清空列表
list.clear();
}
}