From c3ed2ab00d4f28ed6e849861772c8e74800447f5 Mon Sep 17 00:00:00 2001 From: wjf-hs Date: Fri, 25 Apr 2025 16:11:40 +0800 Subject: [PATCH] =?UTF-8?q?edge=E6=B7=BB=E5=8A=A0=E8=BE=B9=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/graph.c | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/src/graph.c b/src/graph.c index 8021d28..dca4e3d 100644 --- a/src/graph.c +++ b/src/graph.c @@ -628,18 +628,6 @@ static bool graph_add_edge(struct _graph* self, void* from, void* to, uint32_t w // add edge if (from_node->edge == NULL) { - from_node->edge = graph_edge_new(); - if (from_node->edge == NULL) - { - return false; - } - from_node->edge->weight = weight; - from_node->edge->target = to_node; - } - else - { - struct _graph_edge* next_edge = from_node->edge->next; - struct _graph_edge* pre_edge = NULL; struct _graph_edge* new_edge = graph_edge_new(); if (new_edge == NULL) { @@ -648,7 +636,19 @@ static bool graph_add_edge(struct _graph* self, void* from, void* to, uint32_t w new_edge->weight = weight; new_edge->target = to_node; - new_edge->next = next_edge; + from_node->edge = new_edge; + } + else + { + struct _graph_edge* new_edge = graph_edge_new(); + if (new_edge == NULL) + { + return false; + } + new_edge->weight = weight; + new_edge->target = to_node; + + new_edge->next = from_node->edge->next; from_node->edge->next = new_edge; } @@ -665,8 +665,6 @@ static bool graph_add_edge(struct _graph* self, void* from, void* to, uint32_t w } else { - struct _graph_edge* next_edge = to_node->edge->next; - struct _graph_edge* pre_edge = NULL; struct _graph_edge* new_edge = graph_edge_new(); if (new_edge == NULL) { @@ -675,7 +673,7 @@ static bool graph_add_edge(struct _graph* self, void* from, void* to, uint32_t w new_edge->weight = weight; new_edge->target = from_node; - new_edge->next = next_edge; + new_edge->next = to_node->edge->next; to_node->edge->next = new_edge; }