#include "stdio.h"
#include "stdlib.h"
#include "io.h"
#include "math.h"
#include "time.h"
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXVEX 100
typedef int Status;
typedef char VertexType;
typedef int EdgeType;
typedef struct EdgeNode
{
int adjvex;
EdgeType info;
struct EdgeNode *next;
}EdgeNode;
typedef struct VertexNode
{
VertexType data;
EdgeNode *firstedge;
}VertexNode, AdjList[MAXVEX];
typedef struct
{
AdjList adjList;
int numNodes,numEdges;
}GraphAdjList;
void CreateALGraph(GraphAdjList &G)/*此处将*G改为&G*/
{
int i,j,k;
EdgeNode *e;
printf("输入顶点数和边数:\n");
scanf("%d,%d",&G.numNodes,&G.numEdges); /* 此处将两个&G->改为&G. */
for(i = 0;i < G.numNodes;i++) /* 此处将G->改为G. */
{
scanf(&G.adjList[i].data); /* 此处将两个&G->改为&G. */
G.adjList[i].firstedge=NULL; /*此处将G->改为G. */
}
for(k = 0;k < G.numEdges;k++)/* 此处将G->改为G. */
{
printf("输入边(vi,vj)上的顶点序号:\n");
scanf("%d,%d",&i,&j);
e=(EdgeNode *)malloc(sizeof(EdgeNode));
e->adjvex=j;
e->next=G.adjList[i].firstedge; /* 此处将G->改为G. */
G.adjList[i].firstedge=e; /* 此处将G->改为G. */
e=(EdgeNode *)malloc(sizeof(EdgeNode));
e->adjvex=i;
e->next=G.adjList[j].firstedge; /* 此处将G->改为G. */
G.adjList[j].firstedge=e; /*此处将G->改为G. */
}
}
int main(void)
{
GraphAdjList G;
CreateALGraph(G);/*将&删去*/
return 0;
}
*和&的转化出现了问题?请看代码的注释行,改动前的代码是可以运行的。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- threenewbee 2019-10-16 19:23关注
c语言不支持引用,你将源代码后缀修改为cpp
#include "stdio.h" #include "stdlib.h" #include <sys/io.h> #include "math.h" #include "time.h" #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAXVEX 100 typedef int Status; typedef char VertexType; typedef int EdgeType; typedef struct EdgeNode { int adjvex; EdgeType info; struct EdgeNode *next; }EdgeNode; typedef struct VertexNode { VertexType data; EdgeNode *firstedge; }VertexNode, AdjList[MAXVEX]; typedef struct { AdjList adjList; int numNodes,numEdges; }GraphAdjList; void CreateALGraph(GraphAdjList &G)/*此处将*G改为&G*/ { int i,j,k; EdgeNode *e; printf("输入顶点数和边数:\n"); scanf("%d,%d",&G.numNodes,&G.numEdges); /* 此处将两个&G->改为&G. */ for(i = 0;i < G.numNodes;i++) /* 此处将G->改为G. */ { scanf(&G.adjList[i].data); /* 此处将两个&G->改为&G. */ G.adjList[i].firstedge=NULL; /*此处将G->改为G. */ } for(k = 0;k < G.numEdges;k++)/* 此处将G->改为G. */ { printf("输入边(vi,vj)上的顶点序号:\n"); scanf("%d,%d",&i,&j); e=(EdgeNode *)malloc(sizeof(EdgeNode)); e->adjvex=j; e->next=G.adjList[i].firstedge; /* 此处将G->改为G. */ G.adjList[i].firstedge=e; /* 此处将G->改为G. */ e=(EdgeNode *)malloc(sizeof(EdgeNode)); e->adjvex=i; e->next=G.adjList[j].firstedge; /* 此处将G->改为G. */ G.adjList[j].firstedge=e; /*此处将G->改为G. */ } } int main(void) { GraphAdjList G; CreateALGraph(G);/*将&删去*/ return 0; }
我这里通过编译。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 matlab数字图像处理频率域滤波
- ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
- ¥15 ELGamal和paillier计算效率谁快?
- ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
- ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
- ¥15 Arcgis相交分析无法绘制一个或多个图形
- ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
- ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
- ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
- ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误