//-----------------------------------------------------------------------------+ // Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd. // = FileName : TGraph.h // = Version : ver2.0 // = Author : xlc // = CreateDate : 2002-09-09 // = Description: 类的声明 // = Maintainers: // //-----------------------------------------------------------------------------+ #ifndef _TGRAPH_H_ #define _TGRAPH_H_ #ifndef _TGRAPHNODE_H_ #include "TGraphNode.h" #endif #ifndef _TTABLE_H_ #include "TTable.h" #endif #ifndef _TGRAPHARC_H_ #include "TGraphArc.h" #endif #ifndef _TPDLIST_H_ #include "TPDList.h" #endif class GEOAPI TGraph { public: ~TGraph(); //node long GetNodeNum()const; TGraphNode* operator[](long i); long Find(const TGraphNode&n); //如果已经存在自动删除pNode,返回索引 long operator<<(TGraphNode* pNode); void DelNode(long i); //修改后必须调用,调整位置使内部表保持有序。 long CheckNode(long i,TTable *pLstArcFree); //pLstArcFree放置与i节点连接但不属于本图的边,需要由所属图执行CheckArc(); long CheckNode(TGraphNode*pNode,TTable *pLstArcFree=NULL); //arc long GetArcNum()const; TGraphArc* operator()(long i); long Find(const TGraphArc&a); //如果已经存在自动删除pArc;pArc->IsValid()!!! long operator<<(TGraphArc* pArc); void DelArc(long i); //修改后必须调用,调整位置使内部表保持有序 long CheckArc(long i); long CheckArc(TGraphArc*pArc); //Create //pArc->m_pNode0,pArc->m_pNode1必须是临时new的,如果在图中已经存在,被自动delete! //自动创建边和节点 long Create(TGraphArc *pArc); //Clear void UnConnect(); void Clear(); void ClearArc(); void ClearNode(); protected: TPDListEx m_allNode;//始终保持有序 TPDListEx m_allArc; //始终保持有序 }; #endif