队列有多种实现的方式,有数组队列还有循环队列
- 数组队列出列的时间复杂度是O(n)
数组队列
1 | public interface Queue<E> { |
1 | package dataStructure; |
循环队列
- 接口也是继承的Queue接口
- 若创建一个容量为10的队列,需要创建容量为11的数组,
- 因为这是为了保证 front == tail时,队列为空
- front == tail + 1时,队列为满
1 | package dataStructure; |
两种队列的比较
- 下面是两种队列时间复杂度的对比
链表队列
- 我们需要在链表中加个尾指针,这样的话 操作的时间复杂度会降低
- 尾端的 删除元素 时间复杂度是O(n),添加元素 时间复杂度是O(1)
- 首端 删除、添加 的时间复杂度都是O(1)
- 所以我们选择链表的尾端添加元素,首端删除元素
1 | package dataStructure; |