0
Q
解決類繼承算法
A
回答
1
在最後,它歸結爲一個DAG(有向無環圖)。因此,您可以執行廣度優先搜索或深度優先搜索。你只需要樹木的簡單情況。
例(BFS,僞代碼,未經測試):
List<Array<Typespec>> flatten(Array<Pair<Typespec,Typespec>> input) {
List<Array<Typespec>> result;
Queue<Array<Typespec>*> q;
var elem=&result.append([null]);
q.append(elem);
while (!q.empty()) {
for (i in input) {
if (i.first==q.front().back()) {
var elem=&result.append(q.front().clone().append(i.second));
q.append(elem);
}
}
q.pop_front();
}
return result;
}
這是假設你的意思是[null,Person]
,而不是倒過來。請注意,它在每個結果開始時產生一個null
,與您的示例不同。
+0
我曾經見過的最糟糕的僞代碼^^但請注意一點... – c0rnh0li0 2010-11-28 19:06:35
相關問題
- 1. 解決關係繼承的算法
- 2. 解決多繼承
- 3. Typescript多重繼承解決方法?
- 4. C#泛型繼承的解決辦法
- 5. 解決菱形繼承
- 6. 繼承解決方案
- 7. 學說1.2類表繼承解決方法?
- 8. 無法解決閃光燈錯誤5000:類...必須繼承'flash.display.MovieClip'
- 9. 繼承決議
- 10. 虛擬繼承如何解決「菱形」(多重繼承)歧義?
- 11. C++解決菱形繼承如果沒有虛擬繼承
- 12. python類繼承瞭解
- 13. 理解類表繼承
- 14. 如何解決這個繼承難點?
- 15. BuildManager解決頁面繼承問題
- 16. 幫助解決這些警告。 [繼承]
- 17. 解決C#中的繼承問題
- 18. 方法註解繼承
- 19. 繼承Python類繼承docstrings
- 20. iOS繼承問題 - 無法通過繼承類繼承一個類
- 21. 項目/解決方案類的繼承樹和依賴圖
- 22. 更好地解決案例類繼承棄用問題?
- 23. 其他繼承類中的繼承類
- 24. 無法解決承諾
- 25. 瞭解繼承
- 26. 瞭解繼承
- 27. 從元類繼承方法
- 28. 方法調用繼承類
- 29. 無法繼承MediaElement類
- 30. 引用類繼承方法
不應該第一行是'[null,Person]`? – Dialecticus 2010-11-28 13:25:05