队列Queue

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两个指针变量
在这里插入图片描述

在这里插入图片描述

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值