2010-09-21 176 views
1

什麼是最好的數據結構做如下操作快速插入並迅速

  • 插入
  • 查找搜索。

感謝 阿維納什

+2

這功課嗎?在現實世界中,答案是「取決於」。 – 2010-09-21 14:09:16

+0

直接取決於插入和查找的比例;它也可以取決於插入和查找的類型(插入或尋找數據時可能會有一些有用的關聯) – Unreason 2010-09-21 14:16:41

+0

沒有作業,我想了解圖形鄰接列表的最佳實現。 – Avinash 2010-09-21 14:19:17

回答

0

圖鄰接列表的一個好實現是使用動態分配的整數向量。

假設您的圖中至多有N個節點。您可以將圖存儲在一個由N個動態分配的整數向量組成的數組中。 它看起來像這樣:

矢量[N]

從節點x插入一個邊緣節點Y使用:

矢量[X] .push(Y)

這如果圖很稀疏(沒有很多邊),可以快速找到節點的所有輸出邊。

如果您想查找x和y之間是否存在邊,則必須通過vector [x]並搜索它。如果你想加快速度,那麼如果節點數很少(小於1000是合理的),你可以使用2維布爾數組。

如果你有很多節點並且想要加速這個操作,你可以使用散列表。

1

根據我的hash_map

3

如果相同的數據結構需要做兩個業務,那麼它應該是一個hash map

+0

謝謝,我正在試圖找出GRAPH Adjancy列表的最佳實施。任何想法 – Avinash 2010-09-21 14:10:38

+0

有這個BOOST C++庫(http://en.wikipedia.org/wiki/Boost_Graph_Library) – 2010-09-21 14:59:14