2011-04-25 65 views
0

在試圖執行DFS時,保存所有已訪問節點列表的最佳數據結構是什麼?如果每個節點都有一個唯一的ID,則一種方法是維護這些唯一ID的散列。如果他們沒有唯一的ID,哈希節點是否可行?在C++中散列指針值

+2

爲什麼你不能把指針指向'size_t'? – ildjarn 2011-04-25 15:27:20

+0

指針不是唯一的ID本身(當序列化存儲數據和它的原始地址時)。因此,在反序列化時,您只需將指針映射到新的內存位置即可。 – 2011-04-25 15:36:19

回答

1

而不是把你訪問過的所有節點放到一個散列表中,把它們放在一個堆棧中。如果將訪問過的節點放入堆棧中,則可以更容易地返回並跟蹤搜索的其他分支。

0

讓我們考慮的原因地址不會是唯一的標識符...

  1. 假如你被複制的節點,那麼他們將獲得一個新的地址。

  2. 如果您釋放節點並分配新節點,那麼新分配的節點可以重新使用一些先前的地址。

如果你能夠令人滿意地說上述不適用(我猜他們不會),那麼肯定吧,馬上開始吧。