填空题
[说明] 编写一个函数根据用户输入的偶对(以输入。表示结束)建立其有向图的邻接表。一个图的邻接表存储结构定义如下:
# 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) 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的单链表中,如此反复,直到将图中所有边处理完毕,则建立了该有向图的邻接表。