⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.cpp

📁 一个图的学习程序
💻 CPP
字号:
#include "iostream"
#include "Graphlnk.h"
#include  <fstream>  
using  namespace  std;

struct GLvector//向量
{
	int sign;
	float fX;
	float fY;
	float fZ;     
};
static const float a2fVertexOffset[4][3] =
{
        {0.0, 0.0, 0.0},{1.0, 0.0, 0.0},{1.0, 1.0, 0.0},{0.0, 1.0, 0.0}
};
void CreateVertices(int iDataSetSize,Graphlnk<GLvector,int> &G,float fStepSize)
{
	float a=0.0;
	int iX, iY, iZ,iVertex=0;
	for(iY = 0; iY <= iDataSetSize; iY++)
        for(iX = 0; iX <= iDataSetSize; iX++)
        {

			G.NodeTable[iVertex].data.fX =iX*fStepSize;
            G.NodeTable[iVertex].data.fY =iY*fStepSize;
            G.NodeTable[iVertex].data.fZ = a;
			if(iVertex == 0)
			{
				G.NodeTable[iVertex].data.sign = 1;	
			}
			else
			{
				G.NodeTable[iVertex].data.sign = G.NodeTable[iVertex-1].data.sign+1;
			}
			/*cout<<"<"<<G.NodeTable[iVertex].data.sign<<",";
			cout<<G.NodeTable[iVertex].data.fX<<",";
			cout<<G.NodeTable[iVertex].data.fY<<",";
			cout<<G.NodeTable[iVertex].data.fZ<<">"<<endl;*/
			iVertex++;

        }
		G.numVertices = iVertex;
		cout<<"The number of numVertices:"<<G.numVertices<<endl;

}
int main()
{
	using std::cout;
	using std::cin;
	using std::endl;

	

	
	int iDataSetSize,cost;
	int num,iVertex=0,iVertex1=0,iVertex2=0;
	cout<<"iDataSetSize=:";
	cin>>iDataSetSize;
	num = (iDataSetSize+1)*(iDataSetSize+1);
	float   fStepSize = 1.0/iDataSetSize;
	Graphlnk<GLvector,int>  G;
	CreateVertices(iDataSetSize,G,fStepSize);
	for(int i=0; i<num; i++)
	{
		cout<<"<"<<G.NodeTable[i].data.sign<<",";
		cout<<G.NodeTable[i].data.fX<<",";
		cout<<G.NodeTable[i].data.fY<<",";
		cout<<G.NodeTable[i].data.fZ<<">"<<endl;
	}
	cout<<"-----------"<<endl;
	//加横向边长
	for(int j=0; j<=iDataSetSize; j++)
		{
			for(int i=0; i<iDataSetSize; i++)
			{
				
				
				cost = G.insertEdge(iVertex,iVertex+1,1);
				cout<<"<"<<G.NodeTable[iVertex].data.sign<<","<<G.NodeTable[iVertex+1].data.sign<<":"<<cost<<">"<<endl;
				iVertex++;
			}
			iVertex++;
		}
	cout<<"------------------"<<endl;
	//加纵向边长
	for(int i=0; i<=iDataSetSize; i++)
	{
		for(int j=0; j<iDataSetSize; j++)
		{
			cost = G.insertEdge(iVertex1,iVertex1+iDataSetSize+1,1);	
			cout<<"<"<<G.NodeTable[iVertex1].data.sign<<","<<G.NodeTable[iVertex1+iDataSetSize+1].data.sign<<":"<<cost<<">"<<endl;
			iVertex1= iVertex1+(iDataSetSize+1); 
		}
		iVertex1=i+1;
	}
	cout<<"------------------"<<endl;
	//加斜向边长
	for(int j=0; j<iDataSetSize; j++)
	{
		for(int i=0; i<iDataSetSize; i++)
		{
			cost = G.insertEdge(iVertex2,iVertex2+iDataSetSize+2,1);
			cout<<"<"<<G.NodeTable[iVertex2].data.sign<<","<<G.NodeTable[iVertex2+iDataSetSize+2].data.sign<<":"<<cost<<">"<<endl;
			iVertex2= iVertex2++; 
		}
		iVertex2++;
	}
	cout<<"------------------"<<endl;
	cout<<"------------------"<<endl;
	


	ofstream outFile;
	outFile.open("data.txt",ios::out);
	char a = ':';
	char b = ',';
	//int course = 2401,number;
	for(int i=0; i<num; i++)
	{
		outFile<<'<';
		outFile<<G.NodeTable[i].data.sign;
		outFile<<a;
		outFile<<G.NodeTable[i].data.fX;
		outFile<<b;
		outFile<<G.NodeTable[i].data.fY;
		outFile<<b;
		outFile<<G.NodeTable[i].data.fZ;
		outFile<<'>'<<endl;
		
	
	}
	outFile<<"--------------------------------"<<endl;
	for(int i=0; i<num; i++)
	{
		Edge<GLvector,int> *p,*q;
		p = G.NodeTable[i].adj;
		if(p != NULL)
		{
			outFile<<'<';
			outFile<<G.NodeTable[i].data.sign<<':';
			outFile<<p->dest+1<<',';
			p = p->link;
		}
		while(p != NULL)
		{
			outFile<<p->dest+1<<',';
			p = p->link;
		}
		outFile<<'>'<<endl;
	}
	/*for(int i=0; i<num; i++)
	{
		Edge<GLvector,int> *p,*q;
		p = G.NodeTable[i].adj;
		if(p != NULL)
		{
			cout<<'<';
			cout<<G.NodeTable[i].data.sign<<':';
			cout<<p->dest+1<<',';
			p = p->link;
		}
		if(p != NULL)
		{
			cout<<p->dest+1<<',';
			p = p->link;
		}
		cout<<'>'<<endl;
	}*/

	
	
	G.output();
	getchar();
	getchar();
}

⌨️ 快捷键说明

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