【问题标题】:C graph .Can't add edge to the adjacency listC图。无法将边添加到邻接列表
【发布时间】:2019-04-25 14:44:32
【问题描述】:

我正在尝试创建图表,而 addEdge 功能不起作用。 有我用的代码


typedef struct node {
    int v;
    struct node *next;
}node;
void addEdge(node *adj[],int v,int w){
    node t={v,adj[w]};adj[w]=&t;
    node tt={w,adj[v]};adj[v]=&tt;   
}

【问题讨论】:

  • “不工作”不是问题描述,没有足够的代码来理解或重现问题。请发minimal reproducible example
  • 节点ttt在函数返回时过期,使得存储在adj中的指向它们的指针无效。
  • 就像阿库所说的; tt和t是本地实例化的,返回时指针无效(因为分配的内存在栈上)
  • 我们需要minimal reproducible example,但至少需要调用addEdge 的代码和相关的变量声明。否则前 3 个 cmets 适用。
  • 谢谢。你指出了确切的事情。 @Arkku

标签: c pointers graph structure


【解决方案1】:

节点ttt在函数返回时过期,使得存储在adj中的指向它们的指针无效。

-阿库

使用 malloc。

void addEdge(node *adj[],int v,int w){
    node *t = (node*) malloc(sizeof(node));  
    t->v=v;t->next=adj[w];adj[w]=t;   
    t=(node*) malloc(sizeof(node));
    t->v=w;t->next=adj[v];adj[v]=t;
}

重要提示:将node *adj[]的每个元素初始化为NULL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    相关资源
    最近更新 更多