创建邻接单链表

时间:2011-10-21 21:04:59

标签: c

我有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的新手?非常感谢

1 个答案:

答案 0 :(得分:0)

看起来您的老师打算让您将图表读成adjacency list

这是C99中的sample implementation

将其保存到名为maze.c的文件中,然后使用(例如)编译它:

gcc -g -O2 -Wall -Werror -std=c99 -o maze maze.c

我没有实现dfs()功能,因为我不清楚它应该做什么。我假设有一些文本与你的作业一起解释每个函数的要求。您可能还必须重写printGraph()函数以匹配分配要求。