新手小白求问typedef struct问题

sweetloveyeye 2018-04-02 03:54:07
编译报错

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;

}
...全文
578 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
千寻港生惠香 2018-04-02
  • 打赏
  • 举报
回复
TreeNode *nodetemp nodetemp-> TreeNode nodetemp nodetemp.
自信男孩 2018-04-02
  • 打赏
  • 举报
回复
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;
}
参考一下吧
TreeNode nodetemp;
这儿定义的是结构体变量,而不是结构体指针。对于结构体指针可以用->引用结构体元素,否则要用“."。 另外,father_vex是int类型,而NULL是(void *)0。因此,类型不匹配。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧