怎么改呀大佬们 main函数里面好像有错误
#include <stdio.h>#include <stdlib.h>
#include <iostream>
using namespace std;
#define M 20 //预定义图的最大顶点数
typedef char DataType; //顶点信息数据类型
typedef struct node { //边表结点
int adjvex; //邻接点
struct node *next;
}EdgeNode;
typedef struct vnode { //头结点类型
DataType vertex; //顶点信息
EdgeNode *FirstEdge;//邻接链表头指针
}VertexNode;
typedef struct { //邻接表类型
VertexNode adjlist; //存放头结点的顺序表
int n, e; //图的顶点数与边数
}LinkedGraph;
/*
函数功能:建立图的邻接表
函数参数:邻接表指针变量g;
存放图信息的文件名filename;
图的类型参数c,c=0表示建立无向图,否则表示建立有向图
函数返回值:无
*/
void creat(LinkedGraph *g, char *filename, int c)
{
int i, j, k;
EdgeNode *s;
FILE *fp;
fp = fopen(filename, "r");
if (fp)
{
fscanf(fp, "%d%d", &g->n, &g->e); //读入顶点数与边数
for (i = 0; i < g->n; i++)
{
fscanf(fp, "%1s", &g->adjlist.vertex); //读入顶点信息
g->adjlist.FirstEdge = NULL; //边表置为空表
}
for (k = 0; k < g->e; k++) //循环e次建立边表
{
fscanf(fp, "%d%d", &i, &j); // 输入无序对(i,j)
s = (EdgeNode *)malloc(sizeof(EdgeNode));
s->adjvex = j; //邻接点序号为j
s->next = g->adjlist.FirstEdge;
g->adjlist.FirstEdge = s; //将新结点*s插入顶点vi的边表头部
if (c == 0) //无向图
{
s = (EdgeNode *)malloc(sizeof(EdgeNode));
s->adjvex = i; //邻接点序号为i
s->next = g->adjlist.FirstEdge;
g->adjlist.FirstEdge = s; //将新结点*s插入顶点vj的边表头部
}
}
fclose(fp);
}
else
g->n = 0;
}
//函数print():输出邻接表存储结构
void print(LinkedGraph g)
{
EdgeNode *p;
int i;
for (i = 0; i < g.n; i++)
{
printf("%c", g.adjlist.vertex);
p = g.adjlist.FirstEdge;
while (p)
{
printf("-->%d", p->adjvex);
p = p->next;
}
printf("\n");
}
}
//函数weight():输出无向图各顶点的度数
void weight(LinkedGraph g)
{
EdgeNode *p;
int n, i;
for (i = 0; i < g.n; i++)
{
n = 0;
p = g.adjlist.FirstEdge;
while (p)
{
n++;
p = p->next;
}
cout << i << ":" << n << endl;
//printf("%d:%d\n",i,n);
}
}
int main()
{
LinkedGraph * Grap = newLinkedGraph;
creat(Grap,"G11.TXT", 0);
print(*Grap);
weight(*Grap);
delete Grap;
/*
LinkedGraph g;
creat(&g,"G11.TXT",0);
print(g);
weight(g);
*/
return 0;
}
LinkedGraph * Grap = newLinkedGraph;后面newLinkedGraph连起来了 我在vs下调试 提示将void creat(LinkedGraph* g,char* filename, int c) 改为 void creat(LinkedGraph* g,const char* filename, int c) lei1996 发表于 2021-6-5 00:08
我在vs下调试 提示将void creat(LinkedGraph* g,char* filename, int c) 改为 void creat(LinkedGraph* g ...
它提示我fopen有问题然后弄了那个err=fopen_s( 也不知道错哪{:10_266:} lei1996 发表于 2021-6-5 00:08
我在vs下调试 提示将void creat(LinkedGraph* g,char* filename, int c) 改为 void creat(LinkedGraph* g ...
为什么我在VC6.0下运行没出来什么呀 是不是之前要建什么txt文件呀 这个文件调用没怎么学过 不怎么会用{:10_266:} Gacy 发表于 2021-6-5 10:31
为什么我在VC6.0下运行没出来什么呀 是不是之前要建什么txt文件呀 这个文件调用没怎么学过 不怎么会用{:1 ...
fp = fopen(filename, "r");
这里不是有?这句代码要求原文件必须事先存在 看不透
wp231957 发表于 2021-6-5 11:05
fp = fopen(filename, "r");
这里不是有?这句代码要求原文件必须事先存在
emm就没学过这个 然后百度也不是很懂 哭了太菜了 大佬还能细说吗
页:
[1]