2010-06-01 71 views
1

我有一个数据结构如下要求:对数据结构的建议!

  1. 带钥匙的帮助元素直接访问(Key将是一个整数,范围也相同整数的范围)
  2. 避免内存分配在块(用于分配包括数据的数据结构contigous内存)
  3. 应该能够增长的数据结构的大小动态

你会建议哪个数据结构?

任何方向的指针也会有所帮助。

+0

有趣的是你应该提到指针 – 2010-06-02 04:41:21

+0

#2和#3似乎有冲突。任何动态增长的数据结构最终都会在内存中碎片化。 – kefeizhou 2011-04-29 20:23:01

回答

2

听起来像一个hash table(又称字典)我

0

1)稀疏阵列
2,3)堆

你基本上要实现一个堆和一个稀疏阵列共享一个大的缓冲区。通常,存储在稀疏数组中的值是一个指针。在你的情况下,指针将相对于堆的基础,否则称为偏移量。堆应位于大缓冲区中的稀疏数组之前,以便调整堆的大小不会更改偏移量。

通常情况下,这样做是作为一个扁平步骤完成的。换句话说,正常的散列表或稀疏阵列与系统管理指针一起使用,直到它作为一个连续块需要的地步。那时,所有东西都被包装成其他格式,并在稍后再次扩展。