今天和架构师学了一招,我觉得很不错,能解决数据结构复杂时,如何能清楚的表达你的数据结构的组合关系。问题的产生主要的我写一个图方面的数据结构,怎么讲也将不清楚,后来架构师交我怎么一步一步建模,后来发现这个真的很管用,我自己觉得这个挺有用的,和大家分享一下。
例子如下
存储路径的数据结构
//图的邻接节点信息
typedef struct NodeXData
{
int nIndex; //节点序号
double dDis; //节点到邻接节点的距离
AcDbObjectid id;
AcGePoint3d pt; //节点数据
NodeXData *pNext; //下一个邻接节点
} NodeXData;
//头节点信息
typedef struct GNode
{
int nIndex; //节点序号
AcGePoint3d pt; //节点数据
NodeXData * pXData;
} GNode;
Std::vector<GNode*> m_vecHead;
Std::pair<AcGePoint3d, AcGePoint3d > m_vecSpecPt; //特殊连接点
方法
//将节点按对应顺序添加,即添加边的信息,构建图
AppendNode(const AcGePoint3d &pt1,const AcGePoint3d &pt2,const AcDbObjectid &id);
//求所有路径
MakeDis(const AcGePoint3d &ptS,const AcGePoint3d &ptE);