队列是先进先出,栈是先进后出。
Java Stack类,栈是Vector的一个子类,实现后进先出的栈。
Stack stackA = new Stack();
栈是一种 “特殊” 的线性存储结构,因此栈的具体实现有以下两种方式:
Stack<Integer> stack = new Stack<Integer>();//建栈 stack.push(Element);//进栈 stack.pop();//出栈 stack.peek();//取栈顶值(不出栈) stack.isEmpty();//判断栈是否为空
LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。
Queue<String> queue = new LinkedList<String>();
队列存储结构的实现有以下两种方式:
添加:queue.offer() queue.add() 删除队列第一个元素:queue.poll()返回null queue.remove()返回异常 查询队列头部元素:peek()返回null element()返回异常
leetcode题目链接:232. 用栈实现队列
leetcode题目链接:225. 用队列实现栈
leetcode题目链接:20. 有效的括号
leetcode题目链接: 1047. 删除字符串中的所有相邻重复项
leetcode题目链接:150. 逆波兰表达式求值
leetcode题目链接:239. 滑动窗口最大值
leetcode题目链接:347. 前 K 个高频元素
参考:
代码随想录:栈和队列
算法(Java)——栈、队列、堆