C语言 链表创建



我正在尝试使用邻接表表示图形,但我在指针方面遇到麻烦。

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导致未定义行为

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

如果没有这些信息,除了向你指出明显的用法错误外,很难知道你做错了什么。

你是垃圾t在几个地方。特别是对于t = v;,您在其他任何地方都没有原始值。

相关内容

  • 没有找到相关文章

最新更新