QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 713|回复: 4

无向网邻接矩阵段错误问题

[复制链接]
发表于 2004-6-2 18:12:32 | 显示全部楼层 |阅读模式
该程序运行正常,但运行完毕后多了一个断错误,为什么?

[code:1]
/*无向网邻接矩阵*/
#include <stdio.h>
#define INT_MAX 32767
#define vnum 20

typedef struct graph
{
  int vexs[vnum];           /*顶点信息*/
  int arcs[vnum][vnum];     /*邻接矩阵*/
  int vexnum, arcnum;       /*顶点数,弧(边)数*/
} GraphTp;

GraphTp* CreateGraph (GraphTp *ga);
GraphTp* InitiateGraph (GraphTp *ga);

int main (void)
{
  GraphTp *ga;
  ga = CreateGraph(ga);
  Print_Matrix(ga);
}

GraphTp* CreateGraph (GraphTp *ga)
{
  int vex, arc, vexs, arcnum;
  int i, j, k;
  printf("请输入顶点个数:");
  scanf("%d", &vex);
  printf("请输入边数个数:");
  scanf("%d", &arc);
  ga -> vexnum = vex;
  ga -> arcnum = arc;
  for (i = 0; i < ga -> vexnum; i++)
    {
      printf("输入第%d个顶点信息:", i + 1);
      scanf("%d", &vexs);
      ga -> vexs[i] = vexs;
    }
  for (i = 0; i < ga -> vexnum; i++)
    for (j = 0; j < ga -> vexnum; j++)
      ga -> arcs[i][j] = INT_MAX;
  for (k = 0; k < ga -> arcnum; k++)
    {
      printf("请输入第%d条边的起点编号,终点编号:", k + 1);
      scanf("%d %d", &i, &j);
      i--;
      j--;
      printf("输入该边的权值:");
      scanf("%d", &arcnum);
      ga -> arcs[i][j] = arcnum;
      ga -> arcs[j][i] = arcnum;
    }
  return (ga);
}

int Print_Matrix (GraphTp *ga)
{
  int i, j;
  printf("邻接矩阵:\n");
  printf("\t");
  for (i = 0; i < ga -> vexnum; i++)
    printf("%6d", ga -> vexs[i]);
  printf("\n");
  for (i = 0; i < ga -> vexnum; i++)
    {
      printf("%6d\t", ga -> vexs[i]);
      for (j = 0; j < ga -> vexnum; j++)
        printf("%6d", ga -> arcs[i][j]);
      printf("\n");
    }
}

[/code:1]
发表于 2004-6-2 20:41:17 | 显示全部楼层
你没有为指针ga指向的单元分配空间
回复

使用道具 举报

 楼主| 发表于 2004-6-2 21:26:36 | 显示全部楼层
怎么分配?
回复

使用道具 举报

发表于 2004-6-2 22:02:02 | 显示全部楼层
[code:1]
int main (void)
{
  GraphTp *ga;
  ga = (GraphTp *)malloc(sizeof(Graphtp));
  ga = CreateGraph(ga);
  Print_Matrix(ga);
}
[/code:1]
回复

使用道具 举报

 楼主| 发表于 2004-6-2 23:47:33 | 显示全部楼层
谢谢了.我自己也找到了解决方法
[code:1]
int main (void)
{
  GraphTp ga;
  CreateGraph(&ga);
  Print_Matrix(ga);
}
[/code:1]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-8 04:33 , Processed in 0.055667 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表