我正在处理图表。当我想在边列表中插入边时,我遇到了指针问题。
这是所有的图结构:
typedef struct _edge {
int source;
int dest;
int cost;
struct _edge *next;
} edge;
typedef struct {
int id;
rama *edges; /* List of edges */
} node;
typedef struct {
int n_nodes;
int n_edges;
int directed;
node *nodes; /* Array of nodes */
} graph;
当我尝试在边缘列表中插入新边缘时,我的问题就出现了......
int insert_edge(graph *g, int source, int dest, int cost){
edge *e;
edge *nxt;
e=(edge*)malloc(sizeof(edge));
e->source=source;
e->dest=dest;
e->cost=cost;
e->next=NULL;
nxt=g->nodes[source].edges;
if(nxt==NULL)
nxt=e;
else
{
while(nxt->next!=NULL)
nxt=nxt->next;
nxt->next=e;
}
return 1;
}
当我从主函数调用我的 insert_edge 时,当我尝试访问边缘的字段时出现分段错误。
如何正确插入?
当我访问我的 graph->nodes[position].edges 时,它仍然为空......我不知道如何在我的插入函数中更新图表的内容。