栈和递归
栈
栈是一种特殊的线性表,只能在一端进行操作
- 后进先出,last in first out, LIFO
- 频繁地在尾部(栈顶)进行操作
- 可由动态数组或链表实现
接口设计
int size(); //元素的数量
boolean isEmpty(); //是否为空
void push(E element); //入栈
E pop(); //出栈
E top(); //获取栈顶元素
实现
如果直接继承ArrayList或LinkedList,但是这样做的问题是Stack类对象也有了父类中的方法,而对于栈来说是不需要数组或链表中的那些方法的。
所以这里使用组合更好一点,把动态数组或链表作为栈的一部分,这样Stack类对象就只有栈对应的方法
栈的应用
浏览器的前进、后退,类似的还有软件的撤销、恢复操作