我有ADT图表,如:
typedef struct element {
int info;
struct element *link;
} Tnode;
typedef struct graphAdjList {
int nodes;
Tnode *adjList[MAX]; // array of 20 pointers to Tnode
} Tgraph;
Tgraph *readGraph(FILE *fd);
void printGraph(Tgraph *g);
void dfs(Tgraph *g, int start, int visited[], int pred[]);
void destroyGraph(Tgraph *g);
并附上文件“maze.txt”,内容如下:
0 1 6 8
1 0 2 3
2 10 11
3 1 4 12
4 3 13
5 4 6 9
6 5 7
7 8 9
8 0 7 14
9 15 5 7
10 2
11 2
12 3
13 4
14 8
15 9
其中0 1 6 8表示节点号0与节点1,6和8有(一个方向)连接。现在我真的不知道如何通过方法readGraph()基于上面的列表构造图。你能不能指出我详细的实施,因为我是C的新手?非常感谢
答案 0 :(得分:0)
看起来您的老师打算让您将图表读成adjacency list。
这是C99中的sample implementation。
将其保存到名为maze.c
的文件中,然后使用(例如)编译它:
gcc -g -O2 -Wall -Werror -std=c99 -o maze maze.c
我没有实现dfs()
功能,因为我不清楚它应该做什么。我假设有一些文本与你的作业一起解释每个函数的要求。您可能还必须重写printGraph()
函数以匹配分配要求。