graph.h

来自「这是本人精心搜集的关于常用图论算法的一套源码」· C头文件 代码 · 共 49 行

H
49
字号
//由于两种类型互相引用,故预先声明
//对图中顶点类型进行声明
template <class TYPE>
struct Vertex;
//声明弧的类型
template <class TYPE>
struct Arc;
//顶点类型的定义
template <class TYPE> 
struct Vertex{  
	Vertex<TYPE> *pNextVertex;   
	TYPE data;   
	int inDegree;   
	int outDegree;   
	short processed;   
	Arc<TYPE> *pArc;
}; 

//弧类型的定义
template <class TYPE>
struct Arc{  
	Vertex<TYPE> *destination;   
	Arc<TYPE> *pNextArc;
};

//图结构的类Graph的声明
template <class TYPE, class KTYPE> 
class Graph
{  private:      
		int count;           //图中顶点个数      
		Vertex<TYPE> *first; //图中顶点链表的头指针   
   public:      
		Graph();      
		~Graph();      
		void  insertVertex(TYPE dataIn);      
		int  deleteVertex(KTYPE dltKey);      
		int  insertArc(KTYPE  fromKey, KTYPE  toKey);      
		int  deleteArc(KTYPE  fromKey, KTYPE  toKey);      
		int  retrieveVertex(KTYPE  key, TYPE& DataOut);      
		int  firstArc(KTYPE  key,  TYPE& dataOut);      
		bool emptyGraph();      
		int  graphCount();  
		void outputGraph();

		void depthFirstTraverse(void (*visit)(TYPE& info));      
		void breadthFirstTraverse(void (*visit)(TYPE& info));
		void toplogicalSortDepthFirst(void (*visit)(TYPE &data)); 
}; 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?