【发布时间】:2011-12-14 11:52:31
【问题描述】:
我正在尝试使用邻接表来表示图形,但我遇到了指针问题。
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。
【问题讨论】:
-
在将 t 设置为 v 之后,您将 t 设置为 NULL。
-
你不应该完全改变问题的基础。接受答案并提交另一个后续问题。然后添加完整的(尽管不是必要的)代码。
-
然后他们可以抱怨可能的重复:(
-
你现在有另一个问题,然后你以前有。这值得提出另一个问题。至少在我看来。在你的问题中具体化,并尝试将每个问题的问题数量减少到一个......
标签: c graph linked-list adjacency-list