花火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 chaquopy python 安卓
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题