Я пытаюсь реализовать граф, используя список смежности, насколько я знаю, насколько я узнал, если создал переменную array
, указывающую на struct adjlistnode
размера v*sizeof(struct adjlistnode)
thin, я могу хранить адреса v struct adjlistnode
введите узел в каждом индексе массива
Означает, что каждый индекс массива будет указывать на узел типа struct adjlistnode
, но когда я присваиваю G->array[i]=NULL
, это дает мне ошибку
||=== Build: Debug in teeest (compiler: GNU GCC Compiler) ===|
C:\Users\Mahi\Desktop\DATA STR\teeest\main.c||In function 'creategraph':|
C:\Users\Mahi\Desktop\DATA STR\teeest\main.c|59|error: incompatible types when assigning to type 'struct adjlistnode' from type 'void *'|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
почему я не могу назначить NULL для индекса массива
что мне делать, если я хочу получить доступ к списку смежности, например, используя G->array[i]
= первый узеладрес, смежный с i
-й вершиной графа, и позже я добавлю другой узел, если необходимо
struct adjlistnode{
int dest;
struct adjlistnode* next;
};
struct graph{
int V;
struct adjlistnode* array;
};
struct adjlistnode* getnewnode(int dest){
struct adjlistnode* newnode =(struct adjlistnode*)malloc(sizeof(struct adjlistnode));
newnode->dest=dest;
newnode->next=NULL;
return newnode;
}
struct graph* creategraph(int v){
struct graph* G=(struct graph*)malloc(sizeof(struct graph));
G->V=v;
G->array=(struct adjlistnode*)malloc(v*sizeof(struct adjlistnode));
for(int i=0;i<v;i++){
G->array[i] =NULL;
}
return G;
}