花火ios 2021-10-28 22:39 采纳率: 100%
浏览 15
已结题

这个代码为什么进行不下去,是哪里错了吗?求解答


#include<stdio.h>
#include<stdlib.h>
#define MAX 20
int visited[MAX+1];
typedef struct node
{
    int adjvex;
    struct node *next;
    int info;
} EdgeNode;
typedef struct
{
    int vertex;
    EdgeNode *firstedge;
} VertexNode;
typedef VertexNode AdjList[MAX+1];
typedef struct
{
    AdjList adjlist;
    int n,e;
} ALGraph;
void CreatesAdjList(ALGraph *g,int n,int e)
{
    EdgeNode *ptr;
    int k,v1,v2;
    g->n=n;  
    g->e=e;
    for(k=1; k<=g->n; k++)
    {
        g->adjlist[k].vertex=k;
        g->adjlist[k].firstedge=NULL;
    }
    for(k=1; k<=g->e; k++)
    {
        printf("请输入边的两个节点:");
        scanf("%d%d",&v1,&v2);
        ptr=(EdgeNode*)malloc(sizeof(EdgeNode));
        ptr->adjvex=v2;
        int num;
        printf("请输入这条边的权值:");
        scanf("%d",&num);
        ptr->info=num;
        ptr->next=g->adjlist[v1].firstedge;
        g->adjlist[v1].firstedge=ptr;
        ptr=(EdgeNode*)malloc(sizeof(EdgeNode));
        ptr->adjvex=v1;
        ptr->next=g->adjlist[v2].firstedge;
        g->adjlist[v2].firstedge=ptr;
    }
}

void DFS(ALGraph *g,int i)
{
    EdgeNode *p;
    printf("%3d",g->adjlist[i].vertex);
    visited[i]=1;
    for(p=g->adjlist[i].firstedge; p!=NULL; p=p->next)
        if(!visited[p->adjvex])
            DFS(g,p->adjvex);
}

void DFSTraverse(ALGraph *g)
{
    int i;
    for(i=1; i<=g->n; i++)
        visited[i]=0;
    for(i=1; i<=g->n; i++)
        if(!visited[i])
            DFS(g,i);
}

int main()
{
    int n,m,i=1;
    printf("请输入顶点数和边数:");
    scanf("%d%d",&n,&m);
    ALGraph *g;
    CreatesAdjList(g,n,m);
    DFS(g,i);
    DFSTraverse(g);
    system("pause");
    return 0;

}
  • 写回答

1条回答 默认 最新

  • 偷窃月亮的贼 2021-10-30 03:21
    关注

    你的 ALGraph* g 这里没有分配内存。
    C++版本的分配内存:ALGraph* g=new ALGraph;
    C版本的分配内存:ALGraph* g = (ALGraph*)malloc(sizeof(ALGraph));

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月28日
  • 已采纳回答 11月20日
  • 创建了问题 10月28日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?