2010-06-01 53 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)堆

你基本上要實現一個堆和一個稀疏陣列共享一個大的緩衝區。通常,存儲在稀疏數組中的值是一個指針。在你的情況下,指針將相對於堆的基礎,否則稱爲偏移量。堆應位於大緩衝區中的稀疏數組之前,以便調整堆的大小不會更改偏移量。

通常情況下,這樣做是作爲一個扁平步驟完成的。換句話說,正常的散列表或稀疏陣列與系統管理指針一起使用,直到它作爲一個連續塊需要的地步。那時,所有東西都被包裝成其他格式,並在稍後再次擴展。