数据结构模拟题
一个基本的实现,需要满足除构造函数以外复杂度为 O(k) 以外,其余操作均为 O(1)。
常规实现包含两种方式:数组实现 与 链表实现。
其中数组实现可以利用调用次数较小,开成调用次数 3 倍大小,然后从中间开始往两边存储,这样做就不用考虑下标边的界问题;而更为常规的解法是构造一个与限定空间 k 等大的数组,使用两下标并配合坐标转换来做,对于下标自增操作而言,只需要进行「加一取模」即可,而对于下标自减操作,由于考虑负值问题,需要进行「增加限定空间偏移后,进行减一再取模」。
而链表实现则无须考虑额外的下标转换问题,但需要额外定义类。
使用 cnt 记录当前队列元素大小,使用 k 记录初始化时指定的空间大小。
- 数组