2011-05-05 107 views
2

我試圖在C中實現一些使用鄰接矩陣作爲支持數據結構的圖算法。 我需要實現一個加權圖,用實數表示的重量。在加權圖的鄰接矩陣中表示邊緣缺失

由於0和負數對於邊是正確的權重,我怎麼能表示兩個節點之間沒有邊?

+0

嗯......也許C99的['nan()'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/nan.html) – pmg 2011-05-05 20:17:23

回答

2

你可以使用,而不是一個數(double)這樣的結構:

struct weight 
{ 
    double weight; 
    bool edge_exists; 
}; 

,創造weight的鄰接矩陣。所以如果edge_exist s是假的,沒有理由檢查weight,否則weight將是有意義的。

我會使用上述如果每個(?)double可能是一個可能的重量值。

0

怎麼樣無意義(我猜你是假設所有權重應該是正數)數字,比如-1?

這將保持代碼輕便(不需要添加額外的數據結構),並且它會很容易記住。

+0

對不起,我忘記說負數被接受爲重量 – JustB 2011-05-05 20:30:55

+0

時髦!好吧,平等的答案現在看起來相當不錯:) – wpearse 2011-05-05 20:40:41