隣接リストを使用してグラフを表現しようとしていますが、ポインタに問題があります。リンクリストの作成
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。しかし、私が書いたコードはうまくいかなかった。何が問題なの?
EDITED:OK、NULLを修正しました。 予想される出力は1 - >> 1,2です。 2つのノード1が自分自身と次の値2のノードを指すグラフ。 リストを取得した後にグラフを作成すると、問題が発生します。私は3つの異なるノードがあるように見えます。後で私がノードの値を1から3に変更すると、3 - > 1,2が得られますが、2つのノードしか持たないので、その変更を行った後、望ましい出力は3 - > 3,2になるはずです。
tをvに設定した後にtをNULLに設定しています。 – wildplasser
質問の根拠を完全に変更すべきではありません。代わりに回答を受け入れ、別のフォローアップ質問を提出してください。その後、完全なコードを追加します。 – moooeeeep
それから、重複の可能性があると文句を言う可能性があります:( – thetux4