五、Stack 栈
栈是一种特殊的线性表,只能在一端进行操作。
- 往栈中添加元素的操作,一般叫做
push
入栈 - 从栈中移除元素的操作,一般叫做
pop
出栈(只能移除栈顶元素,也叫弹出栈顶元素) - 先进后出的原则
1.栈接口的设计
栈中最频繁的操作就是在尾部做一些操作,所以用动态数组和双向链表的复杂度差不多O(1)。
2.手写Stack
package 栈和队列;
import java.util.ArrayList;
import java.util.EmptyStackException;
import java.util.List;
/**
* @ClassName: Stack
* @Description: 栈的写法
* @author: wangz48
* @date: 2021-12-29 14:26
*/
public class Stack<E> {
/**
* 用来装数据
*/
private List<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(size()-1);
}
/**
* 查看栈顶元素JDK==pick()
*/
public E top(){
return list.get(size()-1);
}
}
测试:
public class StackTest {
public static void main(String[] args) {
Stack<Integer> 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.应用实例
浏览器的前进后退
后退:
前进: