填空题 [说明] 编写一个函数根据用户输入的偶对(以输入。表示结束)建立其有向图的邻接表。一个图的邻接表存储结构定义如下: # 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+ +) { {{U}}(1) {{/U}} g [k]. link = NULL; } printf ( “输一个对:” ); scanf ("%d, %d", &i, &j); while{{U}} (2) {{/U}} { {{U}} (3) {{/U}} s- >adjvex =j; {{U}} (4) {{/U}} g [i].link =s; {{U}} (5) {{/U}} } }
  • 1、
【正确答案】 1、(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),然后接收用户输入的 (以其中之一为0结束标志),对于每条这样的边,申请一个邻接结点,并插入到vi的单链表中,如此反复,直到将图中所有边处理完毕,则建立了该有向图的邻接表。