问题 填空题

[说明] 编写一个函数根据用户输入的偶对(以输入。表示结束)建立其有向图的邻接表。一个图的邻接表存储结构定义如下:
# 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)

答案

参考答案:(A) g[k].data=k;
(B) i! =0 &&j! =0
(C) s = (struct vexnode * ) malloc ( sizeof ( vex-node) );
(D) s- >next = g[i].link;
(E) printf (“输入一个偶对:”);
scanf ("%d, %d", &i, &j);

解析:[解答要点] 本题的算法思想是:先产生邻接表的n个头结点(其结点数值域从1到n),然后接收用户输入的 (以其中之一为0结束标志),对于每条这样的边,申请一个邻接结点,并插入到vi的单链表中,如此反复,直到将图中所有边处理完毕,则建立了该有向图的邻接表。

问答题
单项选择题