[说明] 编写一个函数根据用户输入的偶对(以输入。表示结束)建立其有向图的邻接表。一个图的邻接表存储结构定义如下: # include < stdio. h > # define MAXVEX 30 struct edgenode {int adjvex;char info;struct edgenode * next; } struct vexnode {char data;struct edgenode * link; } typedef struct vexnode adjlist [MAXVEX]; 实现要求的函数如下: void creatadjlist ( adjlist g) {int i, j, k;street vexnode * s;for( k=1; k< =n; k+ +){ (1) g [k]. link = NULL;}printf ( “输一个对:” );scanf ("%d, %d", &i, &j); while (2) { (3) s- >adjvex =j; (4) g [i].link =s; (5) } }
参考答案:(1) g[k].data=k;
解析:
(2) i! =0 &&j! =0
(3) s = (struct vexnode * ) malloc ( sizeof ( vex-node) );
(4) s- >next = g[i].link;
(5) printf (“输入一个偶对:”);
scanf ("%d, %d", &i, &j);
[解答要点] 本题的算法思想是:先产生邻接表的n个头结点(其结点数值域从1到n),然后接收用户输入的