FIFO先进先出
从头部删除
front or head
删除 Dequeue or Push
从尾部插入
rear or tail
插入 Enqueue or Push
front()or Peak()
取头部元素
IsEmpty()
检查是否为空
IsFull()
检查队列是否已满
时间复杂度是O(1)
实现
数组
出队 改变front指向的位置
如果出现下图,那么显然开头的几个位置会被浪费。因此引入循环数组
循环数组。,也就是下一个位置在(i+1)%数组大小的位置 ,前一个位置在(i+N-1)%N
front检查队列是否为空,不为空返回a[front}
数组实现会碰到的问题是数组的大小如果不够的话,重新复制到一个新的更大的数组中的时间复杂度和空间复杂度都很高O(n )
也可能出现多占很多内存,比如100个大小的数组只放了一个元素
链表
头部插入,尾部删除,设置rear和front两个指针变量