|
|
最简单方法是定义一个数组Side(点个数,点个数) as Long
任两点边数加1:Side(a,b)=Side(a,b)+1;
读取任两点边数:Side(a,b);
非常简单,速度也快,
但当点数大过一万后分配的内存量是非常庞大的。所以当点数大多时是不可行的。
现有一个较蠢的函数:
任两点边数加1:Set_Link_On(a, b)=Set_Link_On(a, b)+1;
读取任两点边数:Get_Link_On(a, b);
'有关三角形边计数的变量定义
Private Type Side_2_Point
A() As Long '点号
Count As Long '点个数
End Type
Dim Side() As Side_2_Point '定义成Side_2_Point类型
Private Sub Set_Link_On(A As Long, B As Long) '设置一边数加1
Dim T1 As Long '临时
Dim T2 As Long '临时
With Side(A) '第一个点的计数
.Count = .Count + 1 '边的个数加1
ReDim Preserve .A(.Count) '重新定义分配的内存
.A(.Count) = B '加入边的另一个点号
End With
With Side(B) '第二个点的计数
.Count = .Count + 1 '边的个数加1
ReDim Preserve .A(.Count) '重新定义分配的内存
.A(.Count) = A '加入边的另一个点号
End With
End Sub
Private Function Get_Link_On(A As Long, B As Long) As Long '读取由A,B两点组成的边数
Dim T1 As Long '临时
With Side(A) '第一个点
For T1 = 1 To .Count
If .A(T1) = B Then Get_Link_On = Get_Link_On + 1 '累加第二个点的总个数,也是与B点已组成的边数
Next T1
End With
End Function
|
|