【发布时间】:2010-05-31 17:18:04
【问题描述】:
我需要一个数据结构
- 必须有序(将元素
a, b and c添加到空结构中,将使它们位于0, 1 and 2位置)。 - 允许添加重复项。这是,我可以有一个
a, b, c, a, b的列表。 - 允许删除给定项目的所有出现(如果我执行
delete(1)之类的操作,它将删除结构中1的所有出现)。如果我有元素a, b, c, d, c, e并删除元素c,我应该得到a, b, d, e。 - 我只需要通过两种方式访问元素。第一个是删除给定的 ocorrence 时(见上文),另一个是我将这个结构中的数据转换为列表时。
我真的无法在这里挑选出最好的数据结构。起初我想到了类似 List 的东西(问题是删除项目时有 O(n) 操作),但也许我错过了什么?树/堆呢?哈希表/地图?
我必须假设我会用这个数据结构做尽可能多的添加和删除。
谢谢
【问题讨论】:
-
您并没有真正提到您对“读取”访问的期望。例如,您是否按位置访问元素?这需要多快? 在删除特定元素之后 的位置会发生什么情况?其他元素的位置会相应变化吗?
-
看来戴夫的解决方案就是您正在寻找的。span>
标签: c# java data-structures