C граф. Не могу добавить ребра в список смежности - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь создать график, и функция addEdge не работает. Вот код, который я использовал


typedef struct node {
    int v;
    struct node *next;
}node;
void addEdge(node *adj[],int v,int w){
    node t={v,adj[w]};adj[w]=&t;
    node tt={w,adj[v]};adj[v]=&tt;   
}

1 Ответ

1 голос
/ 04 июля 2019

Узлы t и tt истекают, когда функция возвращается, что делает указатели на них, хранящиеся в adj недействительными.

-Arkku

использует malloc.

void addEdge(node *adj[],int v,int w){
    node *t = (node*) malloc(sizeof(node));  
    t->v=v;t->next=adj[w];adj[w]=t;   
    t=(node*) malloc(sizeof(node));
    t->v=w;t->next=adj[v];adj[v]=t;
}

Внимание! Инициализируйте каждый элемент от node *adj[] до NULL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...