首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

搞了一天头大了,含泪求指点~

2013-08-09 
弄了一天头大了,含泪求指点~~~#include stdio.h#include string.h#include io.h#include malloc.h

弄了一天头大了,含泪求指点~~~


#include <stdio.h>
#include <string.h>
#include <io.h>
#include <malloc.h>
#include <limits.h>
#include <stdlib.h>
#define MAX_NAME 10// 顶点字符串的最大长度+1
#define INT_MAX 0// 用整型最大值代替∞
#define MAX_VERTEX_NUM 6000 // 最大顶点个数 
typedef char VertexType[MAX_NAME];// 顶点数据类型及长度
typedef char LabelType[MAX_NAME];// 标签数据类型及长度
// 邻接矩阵的数据结构
typedef struct
{
int adj;                                // 权值 
int vexnum;   // 图的当前顶点数
int arcnum;// 图的当前边数
VertexType vexs[MAX_VERTEX_NUM];// 顶点向量
}MGraph;
MGraph graph,**p;
// 若G中存在顶点u,则返回该顶点在图中位置;否则返回-1。
int LocateVex(MGraph G,VertexType u)
{
int i;
for(i = 0; i < G.vexnum; ++i)
if( strcmp(u, G.vexs[i]) == 0)
return i;
return -1;
}
int CreateAN(MGraph *G)
{
int i,j,k,w;
char filename[13];  
FILE *graphlist; 
printf("请输入数据文件名(*.txt):");
scanf("%s",filename);
graphlist = fopen(filename,"r");
if(graphlist == NULL)
{
printf("该文件不存在!");
}
else
{
VertexType va,vb;
LabelType la;
fscanf(graphlist, "%d%d", &(*G).vexnum,&(*G).arcnum);
p = (MGraph **)malloc(sizeof(MGraph *)*(*G).vexnum);
for (i=0; i<(*G).vexnum; i++)
p[i] = (MGraph *)malloc(sizeof(MGraph)*(*G).vexnum);
for(i=0;i<(*G).vexnum;++i) 
fscanf(graphlist,"%s",(*G).vexs[i]);
for(i=0;i<(*G).vexnum;++i)// 初始化邻接矩阵 
for(j=0;j<(*G).vexnum;++j)
{
p[i][j].adj=INT_MAX;// 网初始化为无穷大 
}
for(k=0;k<(*G).arcnum;++k)
{
fscanf(graphlist, "%s%s%d",va,vb,&w);
i=LocateVex(*G,va);
j=LocateVex(*G,vb);
p[i][j].adj=p[j][i].adj=w;// 无向 
}
fclose(graphlist);
}
return 1;
}
void Display(MGraph G)// 输出邻接矩阵G
{
int i,j;
printf("G.arcs.adj:\n");// 输出G.arcs.adj 邻接矩阵 
for(i=0;i<G.vexnum;i++)
{
for(j=0;j<G.vexnum;j++)// 这里进行修改,调节显示效果 
printf("%5d",p[i][j].adj);
printf("\n");
}
printf("---------------------------------------\n");


}
void main()
{
CreateAN(&graph);
Display(graph);
for (int i=0; i <graph.vexnum; ++i)
free(p[i]);
free(p); 
printf("hello!");
system("pause");
}


文件比较小的时候可以正常运行,但是当文件过大的时候就会有错误。
我已经用二维动态数组了,怎么还会出现这种问题??
求指点急死了~~~~

还没解决么?
什么问题?

热点排行