81 lines
1.7 KiB
C++
81 lines
1.7 KiB
C++
//-----------------------------------------------------------------------------+
|
|
// 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<TGraphArc*> *pLstArcFree);
|
|
|
|
//pLstArcFree放置与i节点连接但不属于本图的边,需要由所属图执行CheckArc();
|
|
long CheckNode(TGraphNode*pNode,TTable<TGraphArc*> *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<TGraphNode> m_allNode;//始终保持有序
|
|
TPDListEx<TGraphArc> m_allArc; //始终保持有序
|
|
};
|
|
|
|
#endif |