2012-06-16 34 views

回答

1

您是否期望您插入的内容比您要搜索的要多?因为每种方法都比一种更好。

我假设你的LinkedList的节点会是这个样子:

class RleNode { Byte Value; Int32 Length; RleNode Prev; RleNode Next; } 

如果您需要快速插入,那么你会希望有一个链表结构去不管。

为了加速计算位置的查找,我将链接列表结构封装在一个新类中,该类将其与地图索引组合在一起。索引必须在每次插入时重建。

编辑:

我不知道如果一棵树可能会更快依然。您将通过DFS遍历树来重建线性RLE流。通过树,每个父节点可以存储其子节点的总RLE长度,因此可以在不必重新计算总体结构的RLE长度的情况下完成插入操作,并且复原速度也一样快。

我建议你把这个问题重新标记为计算机科学而不是C#。