先进先出,俗称FIFO。
我们来大致描述下进出队列的情况。
有几个注意的地方。
1:如果队列里没有元素将返回nil ,可以给一个错误提示信息。2:进队列的时间复杂度是O(1),因为随着数组的增加不会影响时间复杂度,只是在最后面添加。但是如果这个数组的容量占满了,那么我们得重新调整数组容量来获取更多的空间,这个操作是重新创建新的内存,然后再copy,这个时间复杂度是O(n) 。3:我们假设iOS的数组不是circular buffer来实现,我们考虑下这个情况,注意后面说的数组都是非circular buffer结构实现的。那么队列从头部出队列,后面元素内存要移位操作。这个是一个时间复杂度为O(n)操作。所以我们不能在数组中删除第一个元素,因为删除后,一般数组的机制为了填充前面的空隙后面的元素会前移,所以我们只是返回要出队的元素。
先看没有优化前的队列的代码
进队的代码
-
- (void)enqueue:(id)object
-
{
-
-
if (object != nil) {
-
[self.queueArray addObject:object];