鱼C论坛

 找回密码
 立即注册
查看: 1810|回复: 2

[已解决]创建图出现的问题-program received signal sigsegv

[复制链接]
发表于 2018-11-14 21:16:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1、代码:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAXVEX 100
  4. #define NULL ((void *)0)

  5. typedef struct EdgeNode                        // 边表结点
  6. {
  7.         int adjvex;                                        // 邻接点域,存储该顶点对应的下标
  8.         int weight;                                        // 用于存储权值,对于非网图可以不需要
  9.         struct EdgeNode *next;                // 链域,指向下一个邻接点
  10. } EdgeNode;

  11. typedef struct VertexNode                // 顶点表结点
  12. {
  13.         char data;                                        // 顶点域,存储顶点信息
  14.         EdgeNode *firstEdge;                // 边表头指针
  15. } VertexNode, AdjList[MAXVEX];

  16. typedef struct
  17. {
  18.         AdjList adjList;
  19.         int numVertexes, numEdges;        // 图中当前顶点数和边数
  20. } GraphAdjList;

  21. // 建立图的邻接表结构
  22. void CreateALGraph(GraphAdjList *G)
  23. {
  24.         int i, j, k;
  25.         EdgeNode *e;
  26.        
  27.         printf("请输入顶点数和边数:\n");
  28.         scanf("%d %d", &G->numVertexes, &G->numEdges);
  29.        
  30.         // 读取顶点信息,建立顶点表
  31.         for( i=0; i < G->numVertexes; i++ )
  32.         {
  33.                 scanf("%c", &G->adjList[i].data);
  34.                 G->adjList[i].firstEdge = NULL;                // 初始化置为空表
  35.         }
  36.        
  37.         for( k=0; k < G->numEdges; k++ )
  38.         {
  39.                 printf("请输入边(Vi,Vj)上的顶点序号:\n");
  40.                 scanf("%d %d", &i, &j);
  41.                
  42.                 e = (EdgeNode *)malloc(sizeof(EdgeNode));
  43.                 e->adjvex = j;                                                // 邻接序号为j
  44.                 e->next = G->adjList[i].firstEdge;
  45.                 G->adjList[i].firstEdge = e;
  46.                
  47.                 e = (EdgeNode *)malloc(sizeof(EdgeNode));
  48.                 e->adjvex = i;                                                // 邻接序号为i
  49.                 e->next = G->adjList[j].firstEdge;
  50.                 G->adjList[j].firstEdge = e;
  51.         }
  52. }

  53. int main(){
  54.        
  55.         GraphAdjList * G;
  56.        
  57.         CreateALGraph(G);
  58.        
  59.         return 0;
  60. }
复制代码


2、问题描述:

代码是小甲鱼数据结构与算法图的存储结构那一节的代码,就是用邻接表的形式创建一个图,在原来代码的基础上,我把库和main函数加上去了,能运行:

TIM截图20181114210852.jpg

但是输入顶点和边的数目就动不了了,然后就结束了。我试着调试一下,直接就弹出了program received signal sigsegv,我去网上查了一些好像是什么指针越界,反正挺复杂的,我实在不太明白,不知道这个代码怎么才能运行起来。
最佳答案
2018-11-14 21:47:46
1.png

  1. 1>c:\visualstudioprojects\c\c\main.c(61): warning C4700: 使用了未初始化的局部变量“G”
复制代码

你的编译器没有告诉你吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-14 21:47:46 | 显示全部楼层    本楼为最佳答案   
1.png

  1. 1>c:\visualstudioprojects\c\c\main.c(61): warning C4700: 使用了未初始化的局部变量“G”
复制代码

你的编译器没有告诉你吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-16 20:29:17 | 显示全部楼层
人造人 发表于 2018-11-14 21:47
你的编译器没有告诉你吗?

感谢感谢,解决了,申请一个空间就好了。

我用的是devc++,并没有弹出任何提示,不过运行是正常的,就是不能输入值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 21:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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