C语言中邻接列表的问题

C语言中邻接列表的问题,c,C,我试图使用邻接列表在图中插入节点,但当我尝试插入这一行时,它崩溃了 craiestacao(“Edgware路”,“维德,罗莎”,200,0) 在main()上。如果只有一次插入,它就可以工作 #include <stdio.h> #include <stdlib.h> #include <string.h> #define max 20 #define TRUE 1 #define FALSE 0 typedef struct no{ char

我试图使用邻接列表在图中插入节点,但当我尝试插入这一行时,它崩溃了

craiestacao(“Edgware路”,“维德,罗莎”,200,0)

在main()上。如果只有一次插入,它就可以工作

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define max 20
#define TRUE 1
#define FALSE 0


typedef struct no{
    char nome[100];
    char linhas[100];
    int distancia;
    int manutencao;
    struct no *prox;
    struct no *ant;
} No;

No *LinhaAmarela[max];

No *criaEstacao(char n[100], char l[100], int d, int m){
    int i = 0;
    No *novo = (No*)malloc(sizeof(No*));

    strcpy(novo->nome, n);
    strcpy(novo->linhas, l);
    novo->distancia = d;
    novo->manutencao = m;
    novo->prox = NULL;
    novo->ant = NULL;

    while (LinhaAmarela[i] != NULL && i < max){
        i++;
    }

    LinhaAmarela[i] = novo;
}

int main() {
    criaEstacao("Paddington", "Verde, Rosa, Marrom", 200, 0);
    criaEstacao("Edgware Road", "Verde, Rosa", 200, 0);

    getch();
}
#包括
#包括
#包括
#定义最大值20
#定义真1
#定义FALSE 0
类型定义结构号{
charnome[100];
char-linhas[100];
内部距离;
int manutencao;
结构编号*prox;
结构编号*ant;
}没有;
否*LinhaAmarela[max];
否*Craiestacao(字符n[100],字符l[100],整数d,整数m){
int i=0;
No*novo=(No*)malloc(sizeof(No*));
strcpy(novo->nome,n);
strcpy(novo->linhas,l);
新->距离a=d;
novo->manutencao=m;
novo->prox=NULL;
novo->ant=NULL;
while(LinhaAmarela[i]!=NULL&&i
为结构而不是指针分配内存:

No *novo = malloc(sizeof(No));
更好的:

No *novo = malloc(sizeof(*novo));   

并始终检查返回值。

为结构分配内存,而不是指针:

No *novo = malloc(sizeof(No));
更好的:

No *novo = malloc(sizeof(*novo));   
并始终检查返回值