Я пытаюсь представить график, используя список смежности, но у меня проблемы с указателями.
typedef struct vertex{
int num;
struct vertex *next;
} Vertex;
Vertex *adj[10];
void build(){
Vertex *v=NULL;
Vertex *t=NULL;
v = malloc(1*sizeof(*v));
v->num = 1;
adj[0] = v; //NODE with value 1
t = v;
v = malloc(1*sizeof(*v));
v->num = 1;
t->next = v; // ANOTHER NODE but it should be the SAME NODE with the above one
t = v;
//v = malloc(1*sizeof(*v));
//v->num = 1;
//t->next = adj[0]; // causes infinite loop...
//t = v;
v = malloc(1*sizeof(*v));
v->num = 2;
t->next = v;
t = v;
}
То, что я пытаюсь построить, на самом деле просто. 1 -> 1,2. Но код, который я написал, не работал. В чем может быть проблема?
РЕДАКТИРОВАНИЕ: Хорошо, я исправил NULL.
Ожидаемый результат 1 - >> 1,2. Граф, который имеет 2 узла 1, указывает на себя и на следующий узел со значением 2.
Моя проблема, когда я создаю график после получения списка 1 -> 1,2; похоже, у меня есть 3 разных узла. Я имею в виду позже, когда я изменяю значение узла с 1 на 3, я получаю 3 -> 1,2, но так как у меня должно быть только 2 узла, желаемый результат должен быть 3 -> 3,2 после того, как я сделал это изменение.