gpt4 book ai didi

c - 链表创建

转载 作者:太空宇宙 更新时间:2023-11-04 07:36:21 24 4
gpt4 key购买 nike

我正在尝试使用邻接表来表示图,但我在使用指针时遇到了问题。

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 = NULL;       
v = malloc(1*sizeof(*v));
v->num = 2;
t->next = v; //This is basically dereferencing a NULL pointer

您在将 t 设置为 NULL 后取消引用,导致未定义的行为

还有,你应该告诉我们:
预期输出是什么?
你得到的输出是什么?

没有这些信息,除了向您指出明显的使用错误外,很难说出您做错了什么。

关于c - 链表创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8504009/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com