从2D数组创建图形数据结构

时间:2019-06-02 00:19:13

标签: c graph

我下面的这张图已经被读入2D数组了。

9

     A   B   C   D   E   F   G   H   I
A    -   2   -   -   -   9   5   -   -
B    2   -   4   -   -   -   6   -   -
C    -   4   -   2   -   -   -   5   -
D    -   -   2   -   1   -   -   1   -
E    -   -   -   1   -   6   -   -   3
F    9   -   -   -   6   -   -   -   1
G    5   6   -   -   -   -   -   5   2
H    -   -   5   1   -   -   5   -   4
I    -   -   -   -   3   1   2   4   -

但是,由于该图是对称的,因此不需要阅读该文件的所有边缘。此图中确实只有15条边和9个顶点。

填充图时,我需要结果如下:

<A, B, 2> <A, F, 9> <A, G, 5> <B, C, 4> <B, G, 1> <C, D, 2> <C, H, 5> 
<D, E, 1> <D, H, 1> <E, F, 6> <E, I, 3> <F, I, 1> <G, H, 5> <G, I, 2> <H, I, 4>

如您所见,有15条边,但是在上图中看起来总共有30条边。

我为图创建了两个结构

 struct Edge
 {
   int s; // source
   int d; // destination
   int w; // weight
 };

 struct Graph
 {
   int v; //number of vertices
   int e; //number of edges
   struct Edge* edge;
};

如何使用上面的2D数组中的信息填充图形?我必须考虑到它是对称的,即该图的边缘是2D数组所示的一半。

谢谢。

0 个答案:

没有答案