栈 Stack
- 栈是一种后进先出的数据结构
- Last In First Out(LIFO)
栈的实现
- void push(E) O(1)
- E pop() O(1)
- E peek() O(1)
- int getSize() O(1)
- boolean isEmpty() O(1)
1 | public interface Stack<E> |
1 | public class ArrayStack<E> implements Stack<E> |
栈的应用(20.Valid Parentheses leecode)
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。
思路:利用栈的后进先出特性,如果全是左括号,压入栈中,和外面右括号进行匹配。
1 |
|
队列 Queue
- 队列也是一种线性结构
- 相比数组,队列对应的操作是数组的子集
- 只能从一段(队尾)添加元素,只能从另一端(对首)取出元素
- 队列是一种先进先出的数据结构
- First In First Out(FIFO)
队列的实现
- void enqueue(E) O(1)
- E dequeue() O(n)
- E getFront() O(1)
- int getSize() O(1)
- boolean isEmpty() O(1)
1 | public interface Queue<E> |
1 | public class ArrayQueue<E> implements Queue<E> |
循环队列的实现
1 | public class LoopQueue<E> implements Queue<E> |