这是数据结构里面相当复杂的问题了,说到底它还是一种非连续的数据结构
既然是非连续的,那么每个结点自然保存了指向与它相连的结点的指针,只是这个指针不是一个了,而是不固定的多个或者没有(比如说拓扑排序后,最后的那个结点)
template<class Object>
class graph
{
public:
struct VertexNode
{
Object element;
list<VertexNode*> vTableList; //与顶点相关联的邻接表
};
private:
list<VertexNode> theList; //图的顶点链表
int theSize; //顶点个数
};
这就图的数据结构
对于图有个很关键的词叫做入度,一个结点的入度,指的是指向这个结点的指针个数和
另外就是拓扑结构,拓扑结构指的是没有回路的有向图,通过拓扑排序可以检测一个有向图是否有环
------------------------------------------------------------------------------------------------------------------------------
图的难点在于结点的邻接表不确定,构造一个图是相当复杂的,一般是用来处理实际中存在的问题,根据实际问题来构造图,并采用拓扑排序得到结点的拓扑编号,然后解决相应的问题。
有待深入研究......
另求批评指点,对于图的构造我确实想不出什么更好的方法,如果说给一个现实问题,到是可以构造出一个图。