Typedef struct Node
{
Int x;
Int y;
}MyNode;
Typedef struct Nodel
{
Int start;
Int num;
Edge *firstEdge;
}MyNodel;
Typedef struct Edge
{
Int mainNum;
Int adhereNum;
Double angle;
Struct Edge *pre;
Struct Edge *next;
Struct Edge *twin;
}edge;
Typedef struct MPIEDGE
{
Int mainNum;
Int adhereNum;
Double angle;
}MyEdge;
1,MyNode結構,節點數組保存的是平面上點集的橫座標和縱座標
2,edge結構,邊節點,保存與序號爲mainNum的點相鄰的點信息:adhereNum爲此相鄰點的序號;angle爲序號mainNum的點到此相鄰點的向量到序號mainNum的點到序號爲start(在結構MyNodel中)的點的向量的夾角的弧度(0<=,,,<=2*);pre,next域分別爲雙向鏈表中的前一個和後一個邊節點;twin域爲與此節點對應的一個邊節點(即序號爲mainNum的點成爲序號爲adhereNum的一個相鄰點)
3,MyNodel結構:start爲第一個與此點相鄰的點的序號;num爲當前與此點相鄰的點的個數;firstEdge域指向與此點相鄰的邊節點中angle最小的那個節點(序號爲start的那個相鄰邊節點的angle爲0)
4, MyEdge結構,只是提取了edge結構的前三個元素組成一個節點類型,主要是爲了滿足MPI函數在通信時(自定義通信元素的類型)確定邊的類型用的
如果只需實現串行的voronoi圖算法,則可以把MyNode和MyNodel結構合併,也用不到MyEdge結構了