在OJ上练习编程的时候,有时对栈、队列、堆这些基础数据结构的实现不是考察的重点,而只是要使用这些数据结构解决问题,此时我们熟练掌握语言提供的数据结构API即可。下面对Java中的栈、队列、小根堆和大根堆做一个简单的介绍。
它们都有共用的collections接口中定义的常见函数isEmpty(),可以判断该数据结构中是否还有元素。
栈
Java中有Stack类,但现在已经过时了,不推荐使用。一个更好的方法是使用Deque接口实现栈(Deque意为双端队列,double ended queue)。具体来说又有ArrayDeuqe和LinkedList两种具体类来实现,两者的区别体现在底层分别使用数组和链表来实现。
常用的重要函数包括:
push(); // 向stack栈顶压入一个元素
pop(); // 从stack中弹出栈顶元素
peek(); // 查看stack中栈顶元素,不弹出
// deque接口实现stack
Deque<Integer> stack = new LinkedList<>();
stack.push(1);
stack.push(2);
stack.push(3);
while(!stack.isEmpty()) {
System.out.println(stack.pop());
}<