编译报错
D:\Program Files (x86)\Microsoft Visual Studio\MyProjects\OTDR\main.cpp(95) : error C2819: type 'TreeNode' does not have an overloaded member 'operator ->'
D:\Program Files (x86)\Microsoft Visual Studio\MyProjects\OTDR\main.cpp(25) : see declaration of 'TreeNode'
D:\Program Files (x86)\Microsoft Visual Studio\MyProjects\OTDR\main.cpp(95) : error C2227: left of '->vex' must point to class/struct/union
D:\Program Files (x86)\Microsoft Visual Studio\MyProjects\OTDR\main.cpp(96) : error C2819: type 'TreeNode' does not have an overloaded member 'operator ->'
D:\Program Files (x86)\Microsoft Visual Studio\MyProjects\OTDR\main.cpp(25) : see declaration of 'TreeNode'
D:\Program Files (x86)\Microsoft Visual Studio\MyProjects\OTDR\main.cpp(96) : error C2227: left of '->father_vex' must point to class/struct/union
D:\Program Files (x86)\Microsoft Visual Studio\MyProjects\OTDR\main.cpp(97) : error C2819: type 'TreeNode' does not have an overloaded member 'operator ->'
以下是代码
#include <stdio.h>
#include <stdlib.h>
#include<queue>
using namespace std;
typedef struct Graph
{
int numvex;
int vexs[100]; //顶点表
int arc_d[100][100]; //邻接矩阵,可看作边
int arc_k[100][100];
int numVertexes, numEdges; //图中当前的顶点数和边数
}g;
typedef struct TreeNode //展开时用度节点模型
{
int vex;
int father_vex;
int km_rest;
}node;
void CreateGraph(Graph *g)
{
int i,j;
int num=0;
FILE *fp1,*fp2;
g->numvex=5;
if(NULL==(fp1=fopen("GRAPH_d.txt","r")))
{
printf("can not find GRAPH_d.txt\n");
exit(1);
}
if(NULL==(fp2=fopen("GRAPH_k.txt","r")))
{
printf("can not find GRAPH_k.txt\n");
exit(1);
}
for(i=0;i<g->numvex;i++)
{
g->vexs[i]=i;
for(j=0;j<g->numvex;j++)
{
fscanf(fp1,"%d",&(g->arc_d[i][j]));
fscanf(fp2,"%d",&(g->arc_k[i][j]));
}
}
//打印出来验证一下
for(i=0;i<g->numvex;i++)
{
for(j=0;j<g->numvex;j++)
{
printf("%d ", g->arc_d[i][j]);
}
printf("\n");
}
printf("\n");
for(i=0;i<g->numvex;i++)
{
for(j=0;j<g->numvex;j++)
{
printf("%d ", g->arc_k[i][j]);
}
printf("\n");
}
//打印完毕
return;
}
//////////////第一轮////////////////////
void RoundBegin(int max_i,Graph *g,int *OTDR_vexs)
{
int MaxNum_OTDR=100; //后期可以限制OTDR的数量,先暂时不限制
int OTDR_Pra=150; //OTDR的最远可测公里数参数
TreeNode nodetemp;
queue <TreeNode> q;
nodetemp->vex=max_i;
nodetemp->father_vex=NULL;
nodetemp->km_rest=150;
return;
}
//////////////找出最佳度分布点OTDR_vexs/////////////////////
void BestSolution(Graph *g,int* OTDR_vexs)
{
int i,j;
int max_i=0;
int degree[100];
//计算每个节点的度和公里度
for(i=0;i<g->numvex;i++)
{
degree[i]=0;
for(j=0;j<g->numvex;j++)
{
degree[i]=degree[i]+(g->arc_d[i][j])*(g->arc_k[i][j]);
}
}
//找出度最大的节点
max_i=0;
for(i=0;i<g->numvex;i++)
{
if(degree[i]>degree[max_i])
max_i=i;
}
OTDR_vexs[0]=max_i;
//开始迭代
RoundBegin(max_i,g,OTDR_vexs);
return;
}
///////////////////////////////////
int main()
{
Graph g;
int OTDR_vexs[100];
//邻接矩阵创建图
CreateGraph(&g);
BestSolution(&g, OTDR_vexs);
return 0;
}