队列初体验之数组实现方式
队列
1、初识队列
队列,是一种对存取有严格要求的数据结构
只能从尾部存入数据,从头部取出数据
遵循“先进先出”原则
队列的实现有两种方式:
顺序队列(基于数组)、链队列(基于链表)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AM8SiWUf-1613051090501)(C:/Users/meiqi/Desktop/images/image-20200922111909892.png)]
用数组实现队列
public class ArrayQueue {
// 最大容量
int maxCapacity;
// 声明头尾指针
int head;
int tail;
// 存储元素
int[] arr;
public ArrayQueue(int maxCapacity) {
arr = new int[maxCapacity];
maxCapacity = maxCapacity;
head = 0;
tail = 0;
}
public boolean isFull() {
return tail == maxCapacity;
}
public void add(int n) {
// 先判断队列的容量大小
if (!isFull()) {
arr[tail] = n;
}
}
public boolean isEmpty() {
return head == tail;
}
public int get() {
// 先判断队列是否为空
if (isEmpty()) return -1;
int result = arr[head];
head++;
return result;
}
}
LinkedList的使用
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
// 都能添加元素
// queue.add(1);
queue.offer(1);
queue.offer(2);
queue.offer(3);
// 两者区别 当队列满的时候 add会抛出异常 offer会返回false 更健壮更友好
// 取出元素 分为两种
// 只获取队头元素 不取出
queue.peek();
queue.element();
// 两者区别 当队列为空时 element会抛出异常 peek会返回null
// 获取队头元素 同时取出
queue.poll();
queue.remove();
// 两者区别 当队列为空时 remove会抛出异常 poll会返回null
}
链队列原理分析
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aWNn3Wy3-1613051090502)(C:/Users/meiqi/Desktop/images/image-20200922115947405.png)]