它应该是有效的 - 在开始/结束时添加 - 在开始/结束时删除 - 支持随机访问
答案 0 :(得分:4)
使用circular buffer。当空间不足时,尺寸加倍。这将在开始/结束时执行插入/删除以及在每个操作的O(1)时间内进行随机访问(摊销)。
在C ++中,std :: deque可以在开始/结束时进行插入/删除,也可以在O(1)中进行随机访问。
答案 1 :(得分:3)
<强> Finger Trees 即可。 Hinze,Ralf; Paterson,Ross(2006),“手指树:简单的通用数据结构”,功能规划期刊16(2):197-217。
看起来有点像:
答案 2 :(得分:1)
Purely Functional Random Access Lists。与欣泽的手指树相似。
答案 3 :(得分:0)
这听起来有点像家庭作业问题,所以在澄清之前要避免喂食。
查看一些abstract data types。从那里,您可以决定哪种数据类型符合您的要求,并选择适当的数据结构实现。