2013-10-07 82 views
0

格拉夫例如:檢查的邊緣的存在使用檸檬圖形庫的無向圖

ListDigraph G; 

ListGraph::Node A = G.addNode(); 
ListGraph::Node B = G.addNode(); 
ListGraph::Node C = G.addNode(); 
ListGraph::Node D = G.addNode(); 

ListGraph::Edge AB = G.addEdge(A,B); 
ListGraph::Edge AC = G.addEdge(A,C); 
ListGraph::Edge AD = G.addEdge(A,D); 
ListGraph::Edge BC = G.addEdge(B,C); 
ListGraph::Edge BD = G.addEdge(B,C); 
ListGraph::Edge CD = G.addEdge(C,D); 

我需要花費2個節點(A和C),例如,並返回邊緣的ID的方法,該方法連接這2個節點(如果存在)。

回答

1

您可以將節點存儲在一維陣列中,並將邊緣存儲在二維數組中。也就是說,不是讓節點A,B,C和D有一個數組,Nodes[0]Nodes[3]。然後邊緣AB可以被存儲爲Edge[0][1]。你只是將邊緣存儲爲一個鄰接矩陣。然後,您可以使用此調用找到邊的ID:G.id(Edge[0][1])。如果要驗證這兩個節點之間存在邊緣,則只需檢查邊的ID的絕對值是否小於邊的總數:

if (abs(G.id(Edge[0][1])) < numberOfEdges) 
    return true; 
else 
    return false;