从结构数组创建链接列表图

时间:2020-04-17 22:10:25

标签: c data-structures graph linked-list

所以我正尝试使用结构数组中的链表生成图形。每个结构都包含一个图形边缘,即2个节点和一个权重。该图是无向的,因此从node2到node1还有一条边。从文本文件中扫描了每个结构的内容(如果有帮助,我也可以上传该文件)。

//
struct Edge{
    char node_1[20];
    char node_2[20];
    int weight;
};

\\declaring the array of structures
struct Edges edge[49];

完成此操作后,我需要实现最短路径算法,但是我在这一步骤上已经停留了一段时间。

更新;这是我扫描的文本文件

Carlisle    Newcastle   92
Nottingham  Birmingham  77
Leeds       York        39
Glasgow     Edinburgh   74
Moffat      Carlisle    65
Doncaster   Hull        76
Northampton Birmingham  90
Leicester   Lincoln     82
Sheffield   Birmingham  122
Lincoln     Doncaster   63
Sheffield   Doncaster   29
Bristol     Reading     130
Hull        Nottingham  145
Blackpool   Leeds       116
Birmingham  Bristol     139
Manchester  Leeds       64
Carlisle    Blackpool   140
Leicester   Northampton -61
Newcastle   York        135
Glasgow     Moffat      -28
Leicester   Sheffield   100
Carlisle    Liverpool   -30
Birmingham  Manchester  129
Oxford      Bristol     116
Leeds       Hull        89
Edinburgh   Carlisle    154
Nottingham  Sheffield   61
Liverpool   Manchester  56
Carlisle    Glasgow     50
Sheffield   Lincoln     74
York        Doncaster   55
Newcastle   Edinburgh   177
Leeds       Sheffield   53
Northampton Oxford      68
Manchester  Carlisle    20

1 个答案:

答案 0 :(得分:0)

1节点的数据结构

例如一个(单个)链表:

typedef struct node {
    char name[20];
    struct node* next;
} node;

2查找最短路径的算法

您应该在实现边缘之前选择算法,因为其中一些算法在某些数据结构上非常有效或无效。

由于数据中的权重为负,因此像Dijkstra这样的知名品牌是不可能的。甚至有可能由于负循环而使您的程序无法解决问题。

据我所知,Bellman-Ford应该可以工作。

最终

现在由您决定。如果您遇到上述步骤之一,请随时提问。