隣接リストを使用してグラフを表現しようとしていますが、ポインターに問題があります。
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 . しかし、私が書いたコードは機能しませんでした。何が問題なのですか?
編集済み: OK、NULL を修正しました。予想される出力は 1 -->> 1,2 です。2 つのノード 1 を持つグラフは、それ自体と値 2 を持つ次のノードを指します。私の問題は、リスト 1 --> 1,2; を取得した後にグラフを作成するときです。3 つの異なるノードがあるようです。後でノードの値を 1 から 3 に変更すると、3 --> 1,2 が得られますが、ノードは 2 つしかないはずなので、その変更を行った後、目的の出力は 3 --> 3,2 になるはずです。