2017-07-16 75 views
-1

查找從節點到節點共享相同鏈接的最快方式是什麼?查找具有相同節點的鏈接

所以我有一個鏈接列表,每個鏈接都有一個FromNode和ToNode。 我不知道最快的方法是找到那些有共同節點的鏈接。在列表中循環,並檢查每個鏈接的節點聽起來像需要很長時間才能找到這些鏈接。我應該考慮哪些其他方法?

下面附圖是爲了使事情更清楚。

enter image description here

作爲indecated由圖片,連桿1和2共享B和C的節點。鏈接6,7分享Z和X 所以結果將是那些鏈接。

任何想法都會有幫助

+0

開始與你正在考慮的解決方案。然後看看你能在哪裏改進它。 – Guy

+0

我通常是這樣的項目保留所有節點的列表,所以我可以枚舉所有鏈接,而不必通過所有路徑。那麼這個問題就可以用兩個for循環來解決,就像一個冒泡排序i = 0到N-1,j = i + 1到N. – jdweng

回答

1

您可以在列表中使用LINQ。

假設你有你的鏈接類:

public class Links 
{ 
    public string FromNode { get; set; } 
    public string ToNode { get; set; } 
} 

然後你只需簡單的獲取使用LINQ你的結果:

var links = new List<Links> 
      { 
       new Links{FromNode = "B", ToNode = "C"}, 
       new Links{FromNode = "C", ToNode = "B"}, 
       new Links{FromNode = "A", ToNode = "D"} 
      }; 


     var res = from a in links 
        join b in links 
        on 
        new { FromNode = a.FromNode, ToNode = a.ToNode } equals 
        new { FromNode = b.ToNode, ToNode = b.FromNode } 
        select new { a.FromNode, a.ToNode }; 
相關問題