我正在编写自己的deque /双端队列程序。我似乎无法弄清楚在数组中从哪里开始。假设我有一个大小为6的数组,写入一个插入左侧的推送方法和一个向右插入的方法。但推动在0指数处留下的物品并没有多大意义,因为我必须立即处理环绕。
经过一番研究后我发现如果我有一个空数组,那么第一个项目会被推到数组的中间,并且取决于我想要在数组的左侧或右侧推送元素的位置,最好是从中间工作?我只是想知道这是否可行。
答案 0 :(得分:1)
据我了解,您可以循环使用该数组。存储两个存储起始索引和结束索引的整数;并移动它们而不是移动数组中的元素。当你到达任何一端时,只需转到另一端继续(在计算中使用% length
)。通过这种方式,您可以从任何您想要的地方开始,而不需要移动元素。有点像Circular Buffers。