GItee同步更新
- 五、Stack 栈
- 1.栈接口的设计
- 2.手写Stack
- 3.应用实例
栈是一种特殊的线性表,只能在一端进行操作。
- 往栈中添加元素的操作,一般叫做push入栈
- 从栈中移除元素的操作,一般叫做pop出栈(只能移除栈顶元素,也叫弹出栈顶元素)
- 先进后出的原则
2.手写Stack栈中最频繁的操作就是在尾部做一些操作,所以用动态数组和双向链表的复杂度差不多O(1)。
package 栈和队列; import java.util.ArrayList; import java.util.EmptyStackException; import java.util.List; public class Stack{ private List 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(size()-1); } public E top(){ return list.get(size()-1); } }
测试:
public class StackTest {
public static void main(String[] args) {
Stack stack = new Stack<>();
stack.push(6);
stack.push(7);
stack.push(8);
stack.push(9);
stack.push(1);
while(!stack.isEmpty()){
System.out.println(stack.pop());
}
}
}
3.应用实例
浏览器的前进后退
后退:
前进:



