コード例 #1
0
void graph::initopological()//拓扑排序环境初始化
{
	Vertices.ClearList();					//结点数组清空
	initializationofEdge(maxvertices); 	
	for(j=0;j<maxvertices;j++)				//初始化结果数组、入度数组、删除标志数组
	{
	   topologicalSort[j]=0;
	   Indegree[j]=0;						//用列下标统计入度,便于理解
	   deleflag[j]=0;
	}
}
コード例 #2
0
void graph::inputdata(void)
{
	int nodestart,nodeend,weight;//起始点、终止点、权值
	Vertices.ClearList();//结点数组清空
	initializationofEdge(maxvertices); 
	cout<<"下面添加结点信息!"<<endl;
	cout<<"----------------"<<endl;
	cout<<"请输入结点个数(小于 "<<maxvertices<<"):";
	cin>>inputnodenum;
    nodearray=new char[inputnodenum];//建立字符数组
	cout<<"请输入"<<inputnodenum<<"个结点(单个Ascii码字符),空格隔开,输入完毕后回车:"<<endl;
	for(i=0;i<inputnodenum;i++)
		{
			cin>>nodearray[i];
			insertVertices(nodearray[i]);	
		}
	cout<<inputnodenum<<"个结点已经添加成功了!字符的的默认编号是:"<<endl;
	for(i=0;i<inputnodenum;i++)//显示对应坐标	
		cout<<setw(5)<<i;
	cout<<endl;
	for(i=0;i<inputnodenum;i++)//显示数组中字符
		cout<<setw(5)<<nodearray[i];
	cout<<endl<<endl;
	cout<<"下面添加边信息!"<<endl;
	cout<<"---------------"<<endl;
	cout<<"请输入边数: ";
	cin>>inputedgenum;
	cout<<"例如:1 2 10 表示添加了一条边(从1号结点到2号结点,权值为10)!:"<<endl;
	for(i=0;i<inputedgenum;i++)
	{
		cout<<"下面添加第"<<i+1<<"条边的信息: "<<endl;
	    cin>>nodestart>>nodeend>>weight;
        flag=insertEdge(nodestart,nodeend,weight);
		if(flag==1)
			cout<<"从"<<nodestart<<"号结点"<<"到"<<nodeend<<"号结点之间已经添加了权值为"
			    <<weight<<"的一条边!"<<endl<<endl;
	}
	cout<<"图已经建立!"<<endl;
	delete[] nodearray;
	build=1;
}
コード例 #3
0
void graph::datafordijkstra()//为求最短路径问题准备数据
{
	Vertices.ClearList();				//结点数组清空
	initializationofEdge(maxvertices); 	//边数组初始化
	inputnodenum=6;						//结点数				
	inputedgenum=8;						//边数
	//                     0   1   2   3   4   5
	char defaultnodes[6]={'a','b','c','d','e','f'};//结点名称
	for(i=0;i<inputnodenum;i++)			
	{		
		insertVertices(defaultnodes[i]);//把结点存入存储结构				
	}		    													           
	insertEdge(0,2,10);					//把边的信息存入存储结构
	insertEdge(0,4,30);
	insertEdge(0,5,100);
	insertEdge(1,2,5);
	insertEdge(2,3,50);
	insertEdge(3,5,10);
	insertEdge(4,3,20);
	insertEdge(4,5,60);
	build=1;
}